首页 > 其他分享 >2024/10/15日工作总结

2024/10/15日工作总结

时间:2024-10-15 22:44:09浏览次数:1  
标签:10 code 15 min int 2024 import new public

听写32个单词,阅读一篇英文日报;
完成离散课后作业;
优化验证码代码:
import javax.swing.;
import java.awt.
;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Random;

//Graphics图形绘制抽象类,绘制直线、矩形、椭圆等
//Graphics2D继承Graphics,提供更多绘制方法
//Color设置图像颜色
//Font设置字体样式

//extends继承
//implements接口,接口只能有抽象方法以及常量;继承抽象类,必须重写其所有抽象方法(Java多继承的实现)
public class ValidCode extends JComponent implements MouseListener {
private String code;
private int width,height=40;
private int codeLength=4;
private Random random=new Random();

//验证码更换实现
public ValidCode() {
    width = codeLength * 16 + (codeLength - 1) * 10;
    setPreferredSize(new Dimension(width, height));
    setSize(width, height);
    this.addMouseListener(this);
    setToolTipText("点击可以更换验证码");
}

public int getCodeLength() {
    return codeLength;
}

public String getCode() {
    return code;
}

//设置验证码文字的长度
public void setCodeLength(int Length) {
    if (Length < 4) {
        codeLength = 4;
    } else {
        codeLength = Length;
    }

}

//产生随机的颜色
public Color getRandColor(int min, int max) {

    if (min > 255)
        min = 255;
    if (max > 255)
        max = 255;
    int red = random.nextInt(max - min) + min;
    int green = random.nextInt(max - min) + min;
    int blue = random.nextInt(max - min) + min;
    return new Color(red, green, blue);
}

//设置验证码具体的字母是什么
protected String generateCode(){
    char[] codes =new char[codeLength];
    for(int i=0,len=codeLength;i<len;i++){
        int flag=random.nextInt(2);
        if(flag==0){
            codes[i] = (char) (random.nextInt(26) + 65);
        }else{
            codes[i] = (char) (random.nextInt(26) + 97);
        }
    }
    code = new String(codes);
    return code;
}

@Override
protected void paintComponent(Graphics g) {
    if (code == null || code.length() != codeLength) {
        code = generateCode();
    }

    width = codeLength * 16 + (codeLength - 1) * 10;
    setSize(width, height);
    setPreferredSize(new Dimension(width, height));

    //Font字体类,style:Font.PLAIN(普通)、Font.BOLD(加粗)、Font.ITALIC(斜体)、Font.BOLD+Font.ITALIC(粗斜体)
    Font mFont = new Font("Arial", Font.BOLD | Font.ITALIC, 25);
    g.setFont(mFont);

    //绘制出验证码的背景的矩形轮廓
    Graphics2D g2d = (Graphics2D) g;
    g2d.setColor(getRandColor(200, 250));
    g2d.fillRect(0, 0, width, height);
    g2d.setColor(getRandColor(180, 200));
    g2d.drawRect(0, 0, width - 1, height - 1);

    //绘制出验证码背景的干扰线
    int i = 0, len = 150;
    for (; i < len; i++) {
        int x = random.nextInt(width - 1);
        int y = random.nextInt(height - 1);
        int x1 = random.nextInt(width - 10) + 10;
        int y1 = random.nextInt(height - 4) + 4;
        g2d.setColor(getRandColor(180, 200));
        g2d.drawLine(x, y, x1, y1);
    }

    //绘制出验证码的具体字母
    i = 0;
    len = codeLength;
    FontMetrics fm = g2d.getFontMetrics();
    int base = (height - fm.getHeight()) / 2 + fm.getAscent();
    for (; i < len; i++) {
        int b = random.nextBoolean() ? 1 : -1;
        g2d.rotate(random.nextInt(10) * 0.01 * b);
        g2d.setColor(getRandColor(20, 130));
        g2d.drawString(code.charAt(i) + "", 16 * i + 10, base);
    }
}

//下一个验证码
public void nextCode() {
    generateCode();
    repaint();
}

//读取鼠标左键操作
@Override
public void mouseClicked(MouseEvent e) {
    nextCode();
}

@Override
public void mousePressed(MouseEvent e) {

}

@Override
public void mouseReleased(MouseEvent e) {

}

@Override
public void mouseEntered(MouseEvent e) {

}

@Override
public void mouseExited(MouseEvent e) {

}

}

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Objects;

public class LoginJFrame extends JFrame implements ActionListener {
JLabel jLabel;//标签,显示文本
JTextField jt_code;//输入框
JButton confirm;//确认按钮
private ValidCode vcode = new ValidCode();

public LoginJFrame() {

    //验证码文本和按钮设置
    jLabel = new JLabel("验证码:");
    jt_code=new JTextField();
    confirm = new JButton("确认");
    jLabel.setBounds(50, 10, 60, 40);
    jt_code.setBounds(120,10,120,40);
    confirm.setBounds(120,50,80,30);
    vcode.setBounds(250, 10, 100, 40);
    confirm.addActionListener(this);

    //写入容器
    this.setLayout(null);
    this.add(jLabel);
    this.add(jt_code);
    this.add(vcode);
    this.add(confirm);
    this.setTitle("验证码的实现");

    //容器设置
    this.setSize(400,130);
    this.setLocationRelativeTo(null);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);
    this.setResizable(false);

}

private void clear(){
    jt_code.setText("");
}
public Boolean isValidCodeRight(){
    if(jt_code==null){
        return false;
    } else if (vcode==null) {
        return true;
    } else if (vcode.getCode().equals(jt_code.getText())) {
        return true;
    }else {
        return false;
    }
}

@Override
public void actionPerformed(ActionEvent e) {
    if (Objects.equals(e.getActionCommand(), "确认")) {
        if (!isValidCodeRight()) {
            JOptionPane.showMessageDialog(null, "验证码错误,请重新输入!", "提示消息", JOptionPane.WARNING_MESSAGE);
            clear();
        } else {
            JOptionPane.showMessageDialog(null, "验证通过!", "提示消息", JOptionPane.WARNING_MESSAGE);
            clear();
        }
    }
}

}

public class text {
public static void main(String[] args) {
new LoginJFrame();
}
}

标签:10,code,15,min,int,2024,import,new,public
From: https://www.cnblogs.com/zhanglijian/p/18468700

相关文章

  • 2024-10-15
    CSS简介点击查看代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document&l......
  • 10.15日
    1.上层界面设计(UI设计)Swing提供了多个组件(如按钮、标签、文本框等),通过这些组件,你可以构建用户可视化交互的界面。关键组件JFrame:代表主窗口,所有其他组件都放置在JFrame中。JPanel:用于分隔不同的UI区域,可以嵌套使用。JButton、JLabel、JTextField:分别用于创建按钮、文......
  • Tomcat&Servlet -2024/10/15
    idea中Maven部署Web项目基本架构pom.xml配置文件<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:sche......
  • 10.15
    学习了如何在JavaWeb项目中进行数据库连接操作。通过JDBC连接数据库,执行SQL查询语句获取数据。importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.Statement;publicclassDatabaseAccessExample{publicstatic......
  • 2024.10.15 模拟赛
    2024.10.15模拟赛T1count简要题意给定一个长度为\(n\)的数组求其中正整数数量,\(n≤100\)solution哇,还是太难了输入的时候如果是正数就cnt++输出\(cnt\)即可人机题,不放代码了T2sigma简要题意给定\(n\)个双端队列,其中第\(i\)个队列内有\(c_i\)个整数元素。......
  • 10/15AWT组件学习(1)
    AWT组件学习(1)监听器常用组件布局publicstaticvoidmain(String[]args){Frameframe=newFrame();//Frame是窗体,我们只需要创建这样一个对象就可以了,这样就会直接创建一个新的窗口frame.setSize(500,300);//可以使用setSize方法设定窗体大小frame.setVisible(t......
  • 【专题】2024年经销商车后用户研究:洞察车主变化制胜售后未来报告合集PDF分享(附原数据
    原文链接:https://tecdat.cn/?p=37875 在汽车行业快速变革的时代,“互联网原住民”成为车主群体的重要组成部分。2023-2024年,车后用户线上渠道使用比例不断上升,App/小程序备受青睐,各线上渠道各具优势。同时,购车关注点也在不断变化,价格成为关键因素,本土品牌崛起,新能源汽车受青睐......
  • Vue3 + Openlayers10示例 台风轨迹和台风圈
    前言假装已经完成了vue3和Openlayers10开发环境的搭建,如果有需要,可搜索vue+Openlayers环境搭建的相关文章。本示例基于Vue3和Openlayers10的环境,实现台风轨迹和台风圈的效果。一、安装插件安装Element-plus插件,其实只在台风列表的地方用到了el-checkbox,可根据实际需......
  • 详细解释mAP@10,mAR@10,Prec@10
    系列文章目录文章目录系列文章目录1.精确度(Precision,Prec@N)2.平均精确度(MeanAveragePrecision,mAP@N)3.平均召回率(MeanAverageRecall,mAR@N)总结在信息检索和推荐系统中,mAP@10、mAR@10和Prec@10是常用的评价指标,它们用于衡量检索结果的质量。以下是对这......
  • 2024.10.12 模拟赛
    2024.10.12模拟赛T1delete简要题意给定长度为\(n\)的数列\(a_i\),每次操作需要选择\([l,r]\),满足\(a_l,a_{l+1},...a_{r}\)按位与的结果为\(0\),然后删去\([l,r]\),删去后左边和右边合并起来。问最多能合并多少次。\(n≤63,a_i≤63\)solution显然的,由于这个操作是按......