java语言写一个登录页面带验证码
时间: 2023-10-25 20:11:56 浏览: 37
以下是一个简单的Java登录页面代码,包括验证码的生成和验证:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
public class LoginFrame extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JLabel userLabel, passwordLabel, captchaLabel;
private JTextField userTextField;
private JPasswordField passwordField;
private JTextField captchaTextField;
private JButton loginButton, refreshButton;
private String captchaCode;
public LoginFrame() {
initUI();
initCaptcha();
}
private void initUI() {
setTitle("Login");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 200);
setLocationRelativeTo(null);
setResizable(false);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(4, 2));
userLabel = new JLabel("Username:");
panel.add(userLabel);
userTextField = new JTextField();
panel.add(userTextField);
passwordLabel = new JLabel("Password:");
panel.add(passwordLabel);
passwordField = new JPasswordField();
panel.add(passwordField);
captchaLabel = new JLabel("Captcha:");
panel.add(captchaLabel);
captchaTextField = new JTextField();
panel.add(captchaTextField);
loginButton = new JButton("Login");
loginButton.addActionListener(this);
panel.add(loginButton);
refreshButton = new JButton("Refresh");
refreshButton.addActionListener(this);
panel.add(refreshButton);
add(panel);
}
private void initCaptcha() {
captchaCode = generateCaptcha();
}
private String generateCaptcha() {
String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
StringBuilder sb = new StringBuilder();
Random rnd = new Random();
while (sb.length() < 6) {
int index = (int) (rnd.nextFloat() * chars.length());
sb.append(chars.charAt(index));
}
return sb.toString();
}
private boolean validateCaptcha() {
return captchaTextField.getText().equalsIgnoreCase(captchaCode);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == loginButton) {
String username = userTextField.getText();
String password = new String(passwordField.getPassword());
if (username.equals("admin") && password.equals("admin") && validateCaptcha()) {
JOptionPane.showMessageDialog(this, "Login successful!");
dispose();
} else {
JOptionPane.showMessageDialog(this, "Invalid username, password or captcha.");
initCaptcha();
captchaTextField.setText("");
}
} else if (e.getSource() == refreshButton) {
initCaptcha();
captchaTextField.setText("");
}
}
public static void main(String[] args) {
LoginFrame loginFrame = new LoginFrame();
loginFrame.setVisible(true);
}
}
```
在此代码中,我们使用了Java Swing库来创建GUI界面。在initUI()方法中,我们创建了一个包含用户名、密码和验证码的登录面板,并添加了“登录”和“刷新”按钮。在initCaptcha()方法中,我们使用generateCaptcha()方法生成一个6位随机字符串作为验证码,并在窗口加载时设置captchaCode变量。在validateCaptcha()方法中,我们将用户输入的验证码与captchaCode变量比较,如果相同则返回true,否则返回false。在actionPerformed()方法中,我们检查用户输入的用户名、密码和验证码是否正确,如果正确则显示“登录成功”的消息框,否则显示“无效的用户名、密码或验证码”的消息框,并生成一个新的验证码。最后,在main()方法中,我们创建一个LoginFrame对象并使其可见。