画笔的载体是图层
图层的载体是窗体
效果:
-------------------
效果:
----------------------
实现一个接口可以理解成添加一个能力
接口可以理解为能力的集合
对于abstract(判断:没有方法体),尽量使用隐式声明的就不写
效果:
点击登录后出现:
使用JDBC插入一條數據,
url是cdb-kthncrwi.bj.tencentcdb.com
端口號是 10159
賬號是 test
密碼 521qianfeng
,数据库名是 cangzhouxueyuan,
表名是user ,
表的字段有
id int
email varchar
username varchar
password varchar
使用驱动 com.mysql.jdbc.Driver
修改email和username,运行:
导包导入java.sql的包
ctrl+shift+O全局导包
完善actionPerformed:
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(escJButton)) {
System.exit(0);
}
// 事件和条件写在一起了
if(e.getSource().equals(loginJButton)) {
// 连接信息
String url = "jdbc:mysql://cdb-kthncrwi.bj.tencentcdb.com:10159/cangzhouxueyuan";
String username = "test";
String password = "521qianfeng";
// 要验证的登录信息
String email = userJTextField.getText();
String passwordInput = passwordJTextField.getText();
// JDBC连接和查询数据
try {
// 加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 建立连接
Connection connection = DriverManager.getConnection(url, username, password);
// 构建查询语句
String sql = "SELECT * FROM user WHERE email = ? and password = ?";
// 创建PreparedStatement对象
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, email);
statement.setString(2, passwordInput);
// 执行查询
ResultSet resultSet = statement.executeQuery();
// 验证登录信息
if (resultSet.next()) {
String storedPassword = resultSet.getString("password");
if (passwordInput.equals(storedPassword)) {
JOptionPane.showMessageDialog(null, "登录成功!");
// 在这里可以添加登录成功后的逻辑,如打开主页面或执行其他操作
} else {
JOptionPane.showMessageDialog(null, "密码错误!");
// 在这里可以弹窗显示密码错误的提示信息
}
} else {
JOptionPane.showMessageDialog(null, "用户名或密码错!");
// 在这里可以弹窗显示用户不存在的提示信息
}
// 关闭资源
resultSet.close();
statement.close();
connection.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
效果:
用户名或输入密码错误: