java创建一个窗体,窗体标题是学号+姓名;窗体有账号标签,输入账号的文本框,密码标签,输入密码的文本框,有登陆按钮,重置按钮,注册按钮,点击登陆查询login表中的记录,如果存在弹出消息框登陆成功
时间: 2023-10-08 17:05:51 浏览: 79
好的,以下是一个Java Swing GUI程序的示例代码,实现了您的要求:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class LoginWindow extends JFrame implements ActionListener {
private JLabel lblAccount, lblPassword;
private JTextField entAccount, entPassword;
private JButton btnLogin, btnReset, btnRegister;
private String studentId, studentName;
private Connection conn;
private Statement stmt;
public LoginWindow(String studentId, String studentName) {
this.studentId = studentId;
this.studentName = studentName;
// 设置窗体属性
setTitle(studentId + studentName);
setSize(300, 200);
setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建控件
lblAccount = new JLabel("账号:");
entAccount = new JTextField(20);
lblPassword = new JLabel("密码:");
entPassword = new JPasswordField(20);
btnLogin = new JButton("登陆");
btnReset = new JButton("重置");
btnRegister = new JButton("注册");
// 布局控件
JPanel panel = new JPanel(new GridLayout(3, 2, 10, 10));
panel.add(lblAccount);
panel.add(entAccount);
panel.add(lblPassword);
panel.add(entPassword);
panel.add(btnLogin);
panel.add(btnReset);
panel.add(btnRegister);
add(panel);
// 添加事件监听器
btnLogin.addActionListener(this);
btnReset.addActionListener(this);
btnRegister.addActionListener(this);
// 连接数据库
try {
Class.forName("org.sqlite.JDBC");
conn = DriverManager.getConnection("jdbc:sqlite:test.db");
stmt = conn.createStatement();
} catch (Exception e) {
e.printStackTrace();
}
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btnLogin) {
String account = entAccount.getText();
String password = entPassword.getText();
try {
ResultSet rs = stmt.executeQuery("SELECT * FROM login WHERE account='" + account + "' AND password='" + password + "'");
if (rs.next()) {
JOptionPane.showMessageDialog(this, "恭喜您,登陆成功!");
} else {
JOptionPane.showMessageDialog(this, "抱歉,登陆失败!");
}
} catch (Exception ex) {
ex.printStackTrace();
}
} else if (e.getSource() == btnReset) {
entAccount.setText("");
entPassword.setText("");
} else if (e.getSource() == btnRegister) {
// TODO: 实现注册功能
JOptionPane.showMessageDialog(this, "注册功能尚未实现!");
}
}
public static void main(String[] args) {
new LoginWindow("20210001", "张三");
}
@Override
public void dispose() {
// 关闭数据库连接
try {
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
super.dispose();
}
}
```
需要注意的是,这里同样使用了SQLite3作为数据库,因此需要提前创建一个名为`test.db`的SQLite3数据库,并创建一个名为`login`的表,用于存储账号和密码:
```sql
CREATE TABLE login (
account VARCHAR(10) PRIMARY KEY,
password VARCHAR(10) NOT NULL
);
```
在实际使用时,需要将`20210001`和`张三`替换成对应的学号和姓名。