1. 在Login类中给按钮添加事件
// 按钮添加鼠标点击事件
loginButton.addActionListener();
resetButton.addActionListener();
2. 创建一个事件处理的类, 该类实现了ActionListener
package com.handler;
/**
* @Author:xiexu
* @Date:2023/12/7 13:22
*/
public class LoginHandler implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
}
}
3. 在Login定义
LoginHandler loginHandler;
4.因为需要对登录界面进行相应的操作,所以需要把整个登录界面当作一个对象传到LoginHandler中,然后在LoginHandler进行相应的处理
package com.handler;
/**
* @Author:xiexu
* @Date:2023/12/7 13:22
*/
public class LoginHandler implements ActionListener {
private Login login;
public LoginHandler(Login login) {
this.login = login;
}
@Override
public void actionPerformed(ActionEvent e) {
}
}
在Login类中,初始化时,将当前的 this 传过去
loginHandler = new LoginHandler(this);
5. 指定事件的处理对象
// 按钮添加鼠标点击事件
loginButton.addActionListener(loginHandler);
resetButton.addActionListener(loginHandler);
6. 在LoginHandler中进行相应的处理,
获取按钮中的内容时,需要在Login类中添加相应的get和set方法,不然获取不到
package com.handler;
import com.student_view.Login;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
/**
* @Author:xiexu
* @Date:2023/12/7 13:22
*/
public class LoginHandler implements ActionListener {
private Login login;
public LoginHandler(Login login) {
this.login = login;
}
@Override
public void actionPerformed(ActionEvent e) {
JButton jButton = (JButton) e.getSource();
String text = jButton.getText();
if ("重置".equals(text)) {
// System.out.println("重置");
login.getUserNameTextField().setText("");
login.getPasswordTextField().setText("");
} else if ("登录".equals(text)) {
// System.out.println("登录");
login();
}
}
private void login() {
String userName = login.getUserNameTextField().getText();
String password = login.getPasswordTextField().getText();
System.out.println(userName + ":" + password);
// 查询数据库
boolean flag = false;
if (!flag) {
} else {
JOptionPane.showMessageDialog(login, "用户名或密码错误"); // 给出提示
}
}
}
// getter and setter
public JTextField getUserNameTextField() {
return userNameTextField;
}
public void setUserNameTextField(JTextField userNameTextField) {
this.userNameTextField = userNameTextField;
}
public JPasswordField getPasswordTextField() {
return passwordTextField;
}
public void setPasswordTextField(JPasswordField passwordTextField) {
this.passwordTextField = passwordTextField;
}
7. 实现键盘回车键登录(需要设置为默认按钮)
LoginHandler类需要继承extends KeyAdapter
// 增加键盘按键事件 按回车可以登录
loginButton.addKeyListener(loginHandler);
// 设置loginButton 为默认按钮
getRootPane().setDefaultButton(loginButton);
package com.handler;
import com.student_view.Login;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
/**
* @Author:xiexu
* @Date:2023/12/7 13:22
*/
public class LoginHandler extends KeyAdapter implements ActionListener {
private Login login;
public LoginHandler(Login login) {
this.login = login;
}
@Override
public void actionPerformed(ActionEvent e) {
JButton jButton = (JButton) e.getSource();
String text = jButton.getText();
if ("重置".equals(text)) {
// System.out.println("重置");
login.getUserNameTextField().setText("");
login.getPasswordTextField().setText("");
} else if ("登录".equals(text)) {
// System.out.println("登录");
login();
}
}
private void login() {
String userName = login.getUserNameTextField().getText();
String password = login.getPasswordTextField().getText();
System.out.println(userName + ":" + password);
// 查询数据库
boolean flag = false;
if (!flag) {
} else {
JOptionPane.showMessageDialog(login, "用户名或密码错误"); // 给出提示
}
}
@Override
public void keyPressed(KeyEvent e) {
if (KeyEvent.VK_ENTER == e.getKeyCode()) {
login();
}
}
}
8. 结束,看效果
接上一节:http://t.csdnimg.cn/jRCLi