23.9.16(Java版登录界面)

// An addition program
import javax.swing.JOptionPane; // import class JOptionPane
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.util.Random;
public class Singin {
private static final String[] CAPTCHA_CHARACTERS = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z","1","2","3","4","5","6","7","8","9","0"};
public static void main(String[] args) {
JFrame frame = new JFrame("登录");//创建一个页面,标题为登录
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//用户关闭窗口,程序自动终止运行
frame.setSize(400, 300);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(6, 3));//将面板分为6行3列的网格,共可以储存18个组件
JLabel usernameLabel = new JLabel(" 用户名:");
JTextField usernameField = new JTextField();//创建用户名输入框
JLabel passwordLabel = new JLabel(" 密码:");
JPasswordField passwordField = new JPasswordField();//创建密码输入框,用JPasswordField创建,隐藏显示输入
JLabel black = new JLabel(" ");//纯为了美观,占地方
JLabel captchaLabel = new JLabel(" 验证码:");
JTextField captchaField = new JTextField();
JLabel captchaImageLabel = new JLabel();//创建一个图片标签
JButton loginButton = new JButton("登录");
JButton rigisterButton = new JButton("注册");
panel.add(usernameLabel);
panel.add(usernameField);
panel.add(passwordLabel);
panel.add(passwordField);
panel.add(captchaLabel);
panel.add(captchaField);
panel.add(captchaImageLabel);
panel.add(black);//纯为了美观,占个地方
panel.add(loginButton);
panel.add(rigisterButton);
String captcha = generateCaptcha();//提取验证码
ImageIcon captchaImage = generateCaptchaImage(captcha);//将验证码绘制在图片上
captchaImageLabel.setIcon(captchaImage);//将图片绘制到图片标签中
loginButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String username = usernameField.getText();
//String password = new String(passwordField.getPassword());
String password = passwordField.getText();
String captcha = captchaField.getText();
//String generatedCaptcha = generateCaptcha();
if (username.equals("admin") && password.equals("123456") && captcha.equals(captcha)) {
JOptionPane.showMessageDialog(null, "登录成功!");
} else {
JOptionPane.showMessageDialog(null, "登录失败,请重新登录!");
}
}
});
frame.add(panel);
frame.setVisible(true);
}
private static String generateCaptcha() {
Random random = new Random();
StringBuilder captcha = new StringBuilder();
for (int i = 0; i < 6; i++) {
int index = random.nextInt(CAPTCHA_CHARACTERS.length);
captcha.append(CAPTCHA_CHARACTERS[index]);
}
return captcha.toString();
}
private static ImageIcon generateCaptchaImage(String captcha) {
int width = 100;
int height = 30;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = image.createGraphics();
g2d.setColor(Color.WHITE);
g2d.fillRect(0, 0, width, height);
g2d.setColor(Color.BLACK);
g2d.setFont(new Font("Arial", Font.BOLD, 20));
g2d.drawString(captcha, 10, 20);
g2d.dispose();
return new ImageIcon(image);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)