User
package LoginSystem;
public class User {
private String username;
private String password;
public User(String username, String password) {
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
}
UI界面
package LoginSystem;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class UITest extends JFrame implements ActionListener {
private JPanel panel;
private JTextField usernameField;
private JPasswordField passwordField;
private JButton loginButton;
private JLabel messageLabel;
private LoginService loginService;
public UITest(LoginService loginService) {
this.loginService = loginService;
createUIComponents();
setUpFrame();
loginButton.addActionListener(this); // 绑定监听器
}
//创建窗体
private void createUIComponents() {
panel = new JPanel(new GridLayout(5, 2, 5, 5));
panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
usernameField = new JTextField(20);
passwordField = new JPasswordField(20);
loginButton = new JButton("登录");
messageLabel = new JLabel();
panel.add(new JLabel("用户名:"));
panel.add(usernameField);
panel.add(new JLabel("密码:"));
panel.add(passwordField);
panel.add(loginButton);
}
//窗体的设置
private void setUpFrame() {
this.setTitle("用户登录");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300, 200); // 修改高度以适应内容
this.setResizable(false);
this.add(panel);
this.setLocationRelativeTo(null);
this.setVisible(true);
}
//逻辑实现
public void actionPerformed(ActionEvent e) {
String username = usernameField.getText();
String password = new String(passwordField.getPassword());
if (loginService.login(username, password)) {
JOptionPane.showMessageDialog(
null, // 父组件,null表示没有
"恭喜您登陆成功", // 要显示的消息
"登录成功", // 对话框标题
JOptionPane.INFORMATION_MESSAGE // 消息类型
);
System.out.println("登录成功");
dispose(); // 关闭登录窗口
} else {
JOptionPane.showMessageDialog(
null, // 父组件,null表示没有
"很遗憾,您登陆失败", // 要显示的消息
"登录失败", // 对话框标题
JOptionPane.INFORMATION_MESSAGE // 消息类型
);
}
}
}
登录逻辑
package LoginSystem;
@SuppressWarnings("all")
class LoginService {
// 直接在类中创建一个User对象,代表唯一的用户
private User user; // 静态变量
// 用真实的用户名和密码初始化user对象
public void validUser(User user) {
this.user = user;
}
// login方法现在接受用户名和密码作为参数
public boolean login(String username, String password) {
// 检查传入的用户名和密码是否与存储的有效用户信息匹配
if (user != null && user.getUsername().equals(username) && user.getPassword().equals(password)) {
return true;
}
return false;
}
Main
package LoginSystem;
import javax.swing.*;
public class Main {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
User validUser = new User("wy", "123456"); // 假设这是有效的用户名和密码
LoginService loginService = new LoginService();
loginService.validUser(validUser);
new UITest(loginService);
});
}
}
运行结果