import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.Map;
public class LoginWindow extends JFrame implements ActionListener {
private JTextField usernameField;
private JPasswordField passwordField;
private JButton loginButton;
private JButton registerButton;
// 用一个Map对象保存用户名和密码
private Map<String, String> users = new HashMap<>();
public LoginWindow() {
// 初始化窗口设置
setTitle("Login");
setSize(400, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
// 创建输入面板和组件
JPanel inputPanel = new JPanel(new GridLayout(3, 2));
JLabel usernameLabel = new JLabel("Username:");
JLabel passwordLabel = new JLabel("Password:");
usernameField = new JTextField(20);
passwordField = new JPasswordField(20);
// 将组件添加到输入面板中
inputPanel.add(usernameLabel);
inputPanel.add(usernameField);
inputPanel.add(passwordLabel);
inputPanel.add(passwordField);
// 创建登录和注册按钮
loginButton = new JButton("Login");
registerButton = new JButton("Register");
loginButton.addActionListener(this);
registerButton.addActionListener(this);
// 将输入面板和按钮添加到窗口中
JPanel loginPanel = new JPanel(new FlowLayout());
loginPanel.add(loginButton);
loginPanel.add(registerButton);
add(inputPanel, BorderLayout.CENTER);
add(loginPanel, BorderLayout.SOUTH);
// 初始化用户信息
users.put("admin", "password");
}
@Override
public void actionPerformed(ActionEvent e) {
// 处理按钮点击事件
String username = usernameField.getText();
String password = new String(passwordField.getPassword());
if (e.getSource() == loginButton) {
// 登录按钮点击事件
if (users.containsKey(username) && users.get(username).equals(password)) {
JOptionPane.showMessageDialog(this, "Login success!");
dispose(); // 关闭窗口
} else {
JOptionPane.showMessageDialog(this, "Username or password is incorrect!");
}
} else if (e.getSource() == registerButton) {
// 注册按钮点击事件
if (users.containsKey(username)) {
JOptionPane.showMessageDialog(this, "The username is already taken!");
} else {
// 将新用户信息保存
users.put(username, password);
JOptionPane.showMessageDialog(this, "Registration success!");
}
}
}
public static void main(String[] args) {
// 创建窗口并显示
LoginWindow window = new LoginWindow();
window.setVisible(true);
}
}
这个程序同时实现了登录和注册功能。在程序中,使用一个Map对象来保存所有的账户和密码。当用户单击登录按钮时,程序会从Map中找到对应的用户名和密码,并进行比对,如果验证成功,则输出“Login success!”消息。如果验证失败,则提示用户“用户名或密码不正确”。当用户单击注册按钮时,程序会先检查该用户名是否已经存在。如果存在,则提示用户“该用户名已被占用”,否则将新的用户名和密码添加到Map中,并提示用户“注册成功”。