帮我写一个Java登录窗口
时间: 2023-10-10 08:15:00 浏览: 41
好的,我可以为你提供Java登录窗口的代码示例。在这个示例中,我们将使用Java Swing库来创建GUI界面,并使用JDBC连接MySQL数据库来验证用户输入的用户名和密码是否正确。以下是代码示例:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class LoginWindow extends JFrame implements ActionListener {
// GUI组件
private JLabel lblUsername, lblPassword;
private JTextField txtUsername;
private JPasswordField txtPassword;
private JButton btnLogin, btnCancel;
// 数据库连接信息
private String url = "jdbc:mysql://localhost:3306/test?useSSL=false";
private String user = "root";
private String password = "123456";
public LoginWindow() {
setTitle("用户登录");
setSize(300, 200);
setLocationRelativeTo(null); // 窗口居中
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建GUI组件
lblUsername = new JLabel("用户名:");
lblPassword = new JLabel("密 码:");
txtUsername = new JTextField(20);
txtPassword = new JPasswordField(20);
btnLogin = new JButton("登录");
btnCancel = new JButton("取消");
// 添加GUI组件到窗口
JPanel p1 = new JPanel(new GridLayout(2, 1));
p1.add(lblUsername);
p1.add(lblPassword);
JPanel p2 = new JPanel(new GridLayout(2, 1));
p2.add(txtUsername);
p2.add(txtPassword);
JPanel p3 = new JPanel(new FlowLayout(FlowLayout.CENTER));
p3.add(btnLogin);
p3.add(btnCancel);
setLayout(new BorderLayout());
add(p1, BorderLayout.WEST);
add(p2, BorderLayout.CENTER);
add(p3, BorderLayout.SOUTH);
// 注册事件监听器
btnLogin.addActionListener(this);
btnCancel.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btnLogin) {
String username = txtUsername.getText();
String password = new String(txtPassword.getPassword());
if (login(username, password)) {
JOptionPane.showMessageDialog(this, "登录成功!");
dispose(); // 关闭窗口
} else {
JOptionPane.showMessageDialog(this, "用户名或密码错误!");
}
} else if (e.getSource() == btnCancel) {
dispose(); // 关闭窗口
}
}
private boolean login(String username, String password) {
try {
// 连接数据库
Connection conn = DriverManager.getConnection(url, user, password);
// 构造SQL语句
String sql = "select * from user where username=? and password=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, password);
// 执行查询
ResultSet rs = ps.executeQuery();
// 判断查询结果
if (rs.next()) {
rs.close();
ps.close();
conn.close();
return true;
}
rs.close();
ps.close();
conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
return false;
}
public static void main(String[] args) {
LoginWindow lw = new LoginWindow();
lw.setVisible(true);
}
}
```
这个示例中,我们创建了一个继承JFrame的类LoginWindow,实现了ActionListener接口。在构造函数中创建了GUI组件,并注册了事件监听器。在actionPerformed方法中处理登录和取消按钮的事件。其中,login方法使用JDBC连接MySQL数据库,执行查询并判断查询结果是否正确。最后,在main方法中创建LoginWindow对象并显示窗口。