首页 > 编程语言 >23.9.16(Java版登录界面)

23.9.16(Java版登录界面)

时间:2023-09-16 19:55:59浏览次数:34  
标签:Java String 16 captcha add new JLabel 23.9 panel


// 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);
}
}


标签:Java,String,16,captcha,add,new,JLabel,23.9,panel
From: https://www.cnblogs.com/atrue/p/17707196.html

相关文章

  • JavaScript 中的 `this` 指向问题与其在加密中的应用
    JS中的this关键字是一个非常重要的概念,它在不同情况下会指向不同的对象或值。在本文中,我们将深入探讨JavaScript中this的各种情况,并思考如何将其应用于JS加密中的一些有趣用途。1.全局上下文中的this在全局上下文中,this指向全局对象,通常是浏览器环境中的window对象。这......
  • 无涯教程-JavaScript - ASIN函数
    描述ASIN函数返回给定数字的反正弦或反正弦,并返回以弧度表示的Angular,介于-π/2和π/2之间。语法ASIN(number)争论Argument描述Required/OptionalNumberThesineoftheangleyouwantandmustbefrom-1to1.RequiredNotes如果您希望ASIN函数返回的Angula......
  • HBase学习6(大量数据的导入及操作java)
    在HBase中,有一个Import的MapReduce作业,可以专门用来将数据文件导入到HBase中。hbaseorg.apache.hadoop.hbase.mapreduce.Import表名HDFS数据文件路径1.导入数据1.将资料中数据文件上传到Linux中2.再将文件上传到hdfs中hadoopfs-mkdir-p/water_bill/output_ept_......
  • 2023.9.26 CSP-S初赛游记
    2023.9.26CSP-S初赛游记省流:各位的发挥一定很好吧,那就别跟我抢奖励名额了开启流水账模式\(9.15\)嗯,自测一下\(2022\)年的题。好,\(79.5\),稳了,不看了,做题摆烂去了。(一整天一道题都没做)\(9.16\)上午:应该问题不大,考前再看一眼\(Linux\)和十大排序稳定性就行,做题摆烂......
  • Java基础知识学习笔记总结
    Java学习笔记总结java基础复习1、抽象类可以有构造器,可以有一个非抽象的父类2、垃圾回收机制回收的是堆里面的内存,栈里面的数据自动入栈自动出栈3、引用类型的数据在堆当中,内存中操作的只有栈,new关键字在堆里面分配一块内存4、java中是值传递5、String是不可变字符,即一旦分配......
  • Javaweb、javaEE学习笔记基础知识
    Html1、属性 align:对齐方式 bgcolor:背景颜色target:_blank在新窗口打开_self默认,在相同的框架打开_parent在父框架集中打开_top在整个窗口打开framename在指定的窗口打开2、注释 <!--注释-->3、文件路径 同一目录下:文件名 上级目录:../ 下级目录:从目......
  • java == 和 equals 和 128以下整数
    Integera=127;Integerb=127;System.out.println(a==b);打印值为true而Integera=128;Integerb=128;System.out.println(a==b);打印值为false 因为:在Java中,不应该以这种方式比较对象。当您像a==b那样比较它们时,您比较的是引用,而不是值,值......
  • 无涯教程-JavaScript - ACOSH函数
    描述ACOSH函数返回数字的反双曲余弦值。反双曲余弦是其双曲余弦为数字的值。即ACOSH(COSH(数字))=数字语法ACOSH(number)争论Argument描述Required/OptionalNumberAnyrealnumberequaltoorgreaterthan1.Required适用性Excel2007,Excel2010,Excel2013,E......
  • 软工日报23-9-16
    学习时长:3h解决问题:今天学习了一些HBASE关于java的api代码量:150行 /***查全部数据*@paramtableName*@return*@throwsIOException*/publicstaticArrayList<Pojo>scanAll(StringtableName)throwsIOException{Tabletable=connection.getTab......
  • Java 继承与多态
    1.子类与父类子类:由其他类派生出来的类,父类:包含一些共同特征。子类继承父亲的所有非私有成员。子类只能继承一个父亲子类可以直接调用父类的非私有方法。2.继承语法extendpublicclassMargicionextendsRole{@Overridepublicvoidshowfight(){Sys......