用Java设计编写登录窗口,该应用程序维护一张记录合法用户名和密码的列表;只有合法的用户才能通过登录程序;需要实现:1)最多尝试3次;2)登录成功退出登录窗口;3)用户名或密码为空时,提示信息;4)用户名或密码错误时,清空密码,并将用户名选中; 5)居中显示窗口
时间: 2023-11-30 11:02:19 浏览: 31
好的,下面是Java代码示例,可以实现所述功能的登录窗口:
```
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class LoginFrame extends JFrame {
private JLabel userLabel;
private JLabel passwordLabel;
private JTextField userField;
private JPasswordField passwordField;
private JButton loginButton;
private JButton resetButton;
private int tryCount = 0;
public LoginFrame() {
setTitle("Login");
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null); // 居中显示窗口
// 创建控件
userLabel = new JLabel("Username:");
passwordLabel = new JLabel("Password:");
userField = new JTextField();
passwordField = new JPasswordField();
loginButton = new JButton("Login");
resetButton = new JButton("Reset");
// 设置布局
setLayout(new GridLayout(3, 2));
add(userLabel);
add(userField);
add(passwordLabel);
add(passwordField);
add(loginButton);
add(resetButton);
// 添加事件处理
loginButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String username = userField.getText();
String password = new String(passwordField.getPassword());
if (username.isEmpty() || password.isEmpty()) {
JOptionPane.showMessageDialog(null, "Username or password is empty!");
} else if (isValidUser(username, password)) {
JOptionPane.showMessageDialog(null, "Login successfully!");
dispose();
} else {
JOptionPane.showMessageDialog(null, "Invalid username or password!");
passwordField.setText("");
userField.requestFocusInWindow();
tryCount++;
if (tryCount == 3) {
JOptionPane.showMessageDialog(null, "You have tried 3 times, exit!");
dispose();
}
}
}
});
resetButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
userField.setText("");
passwordField.setText("");
userField.requestFocusInWindow();
}
});
}
private boolean isValidUser(String username, String password) {
// 在此处添加记录合法用户名和密码的列表
return username.equals("admin") && password.equals("123456");
}
public static void main(String[] args) {
LoginFrame frame = new LoginFrame();
frame.setVisible(true);
}
}
```
上述代码创建了一个登录窗口,包括一个输入用户名的文本框、一个输入密码的密码框、一个登录按钮和一个重置按钮。对于登录按钮和重置按钮的事件处理,分别实现了验证用户名和密码、清空输入框和重置焦点的功能。当用户尝试登录时,程序会检查用户名和密码是否为空,如果为空,则提示用户输入;如果不为空,则检查用户名和密码是否正确。如果用户名和密码正确,则显示登录成功的消息并退出登录窗口;如果用户名或密码错误,则提示用户输入错误,并清空密码框并将焦点设置到用户名文本框。如果用户尝试了3次仍然未能成功登录,则提示用户退出程序。