编写程序,利用JTextField和JPasswordField分别接收用户输入的用户名和密码,并对用户输入的密码进行检验。对于每个用户名有3次输入密码机会。(用匿名类的方式来编写)
时间: 2024-03-16 21:45:03 浏览: 94
好的,以下是程序的代码:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class LoginFrame extends JFrame {
private JTextField usernameField;
private JPasswordField passwordField;
private JButton loginButton;
private int loginAttempts;
public LoginFrame() {
super("登录");
this.setSize(300, 150);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new GridLayout(3, 2));
panel.add(new JLabel("用户名:"));
usernameField = new JTextField();
panel.add(usernameField);
panel.add(new JLabel("密码:"));
passwordField = new JPasswordField();
panel.add(passwordField);
loginButton = new JButton("登录");
loginButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String username = usernameField.getText();
char[] password = passwordField.getPassword();
if (checkPassword(username, password)) {
JOptionPane.showMessageDialog(LoginFrame.this, "登录成功!");
dispose();
} else {
loginAttempts++;
if (loginAttempts < 3) {
JOptionPane.showMessageDialog(LoginFrame.this, "用户名或密码错误,请重试!剩余尝试次数:" + (3 - loginAttempts));
} else {
JOptionPane.showMessageDialog(LoginFrame.this, "您已经尝试登录3次,程序将退出!");
System.exit(0);
}
}
}
});
panel.add(loginButton);
this.add(panel);
this.setVisible(true);
}
private boolean checkPassword(String username, char[] password) {
// 这里写检验密码的代码,比如和数据库中的密码进行比对等等
return false;
}
public static void main(String[] args) {
new LoginFrame();
}
}
```
这个程序首先创建了一个 JFrame 窗口,然后在窗口中放置了用户名和密码的输入框以及一个登录按钮。当用户点击登录按钮时,程序会通过 JTextField 和 JPasswordField 组件获取用户输入的用户名和密码,并调用 checkPassword() 方法来检验密码是否正确。如果密码检验成功,程序会弹出一个消息框告诉用户登录成功,然后关闭程序窗口。如果密码检验失败,程序会弹出一个消息框告诉用户用户名或密码错误,并记录下用户尝试登录的次数。如果用户尝试登录的次数超过了3次,程序会弹出一个消息框告诉用户尝试登录的次数超过了限制,并退出程序。
阅读全文