1.项目效果演示:
1.验证界面:
2.验证成功界面:
3.验证失败界面:
简单介绍:实现每次运行出现四个随机字符提供给用户验证,点击确定按钮,如果验证码正确,则会提示验证成功,否则,则出现验证失败。
2.下面我们来说说程序建立,先建一个Java项目,然后建一个file文件夹,里面放随机生成的照片,命名为aaa.jpg,还有在src下建立一个po.ak.com的包,包里有五个Java类。
3.下面是五个Java类的代码:
1.Images.java
package po.ak.com;
import javax.swing.*;
import java.io.File;
import java.net.URI;
import java.net.URL;
public class Images {
//将图片的路径先封装为对象:
public static URI yzURL = new File("file", "aaa.jpg").toURI();
//通过这个路径,再将图片封装为对象:
public static ImageIcon yzImg = new ImageIcon( new File("file", "aaa.jpg").getAbsolutePath());
}
2.Test_1.java
package po.ak.com;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.swing.*;
public class Test_1 {
//定义一个数组并赋值
static String[] strs = {"a","b","c","d","e","f","g","2","3","4","5","6"};
public static void main(String[] args) throws IOException {
//定义图片的宽度
int w = 500;
//定义图片的高度
int h = 150;
//定义一个数组来储存
String[] str1 = new String[5];
//生成一张图片
BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
//获取画笔对象
Graphics g = image.getGraphics();
//设置字体颜色
g.setFont(new Font("宋体",Font.PLAIN,100));
//设置画笔颜色
g.setColor(Color.yellow);
//画一个填充矩形
g.fillRect(0, 0, w, h);
//使用Random类
Random random =new Random();
//定义字体大小
int x = 80;
int y = 115;
//for循环
for(int i = 0 ; i < 4 ; i++) {
//生成一个随机数
int num = random.nextInt(strs.length-1);
//每循环一次获取一个
String str = strs[num];
//获取每次生成的字符
str1[i] = str;
//重新设置画笔颜色
g.setColor(Color.red);
//在图片上画一个字符串
g.drawString(str, x, y);
//设置四个字符之间的距离
x += 100;
}
//获取生成的字符串
String str2 = str1[0]+str1[1]+str1[2]+str1[3];
//重新设置颜色
g.setColor(Color.GREEN);
//设置坐标
for(int i=0;i<8;i++) {
int x1 = random.nextInt(60);
int y1 = random.nextInt(130);
int x2 = random.nextInt(30)+450;
int y2= random.nextInt(130);
//画一些干扰线
g.drawLine(x1, y1, x2, y2);
}
//保存至本地磁盘上
try {
File file = new File("file", "aaa.jpg");
if(!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
ImageIO.write(image, "jpg",file);
} catch (IOException e) {
e.printStackTrace();
}
//创建一个对象
Test_3 ks=new Test_3();
//创建一个窗体:窗体类的具体的对象:
JFrame jf = new JFrame();
Container rq = jf.getContentPane();
rq.setLayout(new BorderLayout());
//给窗体设置一个标题:
jf.setTitle("用户验证");
//求出屏幕的宽度:
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
//求出屏幕的高度:
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
JPanel panel2 = new JPanel();
panel2.setBorder(BorderFactory.createTitledBorder("panel2"));
//设置初始窗体大小
jf.setBounds((width - 900)/2,(height - 780)/2,900,780);
//让窗体的大小不可以改变:
jf.setResizable(false);
//点击窗体的×的时候,程序跟着停止运行:
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
rq.add(panel2,BorderLayout.SOUTH);
panel2.setBounds(301,501,300,80);
JTextField input = new JTextField(30);
//创建一个按钮
JButton but1 = new JButton("确定");
JPanel panel = new JPanel();
JLabel label1 = new JLabel("验证码:");
panel.add(label1);
panel.add(input);
panel.add(but1);
jf.add(ks);
panel2.add(panel);
jf.setVisible(true);
//创建一个按钮监听
but1.addMouseListener(new MouseListener() {
//判断是否对其进行操作
public void mouseClicked(MouseEvent e) {
//获取用户输入的内容
String content = input.getText();
if(str2.equals(content)){
Test_2 g = new Test_2();
g.start();
}
else {
Test_4 g = new Test_4();
g.start();
}
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
});
}
}
3.Test_2.java
package po.ak.com;
import javax.swing.*;
import java.awt.*;
public class Test_2 {
public void start() {
//创建一个窗体
JFrame jf = new JFrame();
//给窗体设置一个标题
jf.setTitle("温馨提示");
//求出屏幕的宽度
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
//求出屏幕的高度
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
//设置初始窗体大小
jf.setBounds((width - 250)/2,(height - 100)/2,250,100);
//让窗体的大小不可以改变:
jf.setResizable(false);
//点击窗体的×的时候,程序跟着停止运行:
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//点完按钮后出现的提示信息
JButton but1 = new JButton("验证成功");
//把按钮加到窗体上
jf.add(but1);
//设置窗口可见
jf.setVisible(true);
}
}
4.Test_3.java
package po.ak.com;
import javax.swing.*;
import java.awt.*;
public class Test_3 extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
//设置面板的背景颜色:
this.setBackground(new Color(166, 211, 234));
//插入一个头部图片:
Images.yzImg.paintIcon(this,g,195,80);
//将画笔的颜色改变一下:
g.setColor(new Color(171, 173, 171, 255));
}
}
5.Test_4.java
package po.ak.com;
import javax.swing.*;
import java.awt.*;
public class Test_4 {
public void start() {
//创建一个窗体
JFrame jf = new JFrame();
//给窗体设置一个标题
jf.setTitle("温馨提示");
//求出屏幕的宽度
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
//求出屏幕的高度
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
//设置初始窗体大小
jf.setBounds((width - 250)/2,(height - 100)/2,250,100);
//让窗体的大小不可以改变:
jf.setResizable(false);
//点击窗体的×的时候,程序跟着停止运行:
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//点完按钮后出现的提示信息
JButton but1 = new JButton("验证失败");
//把按钮加到窗体上
jf.add(but1);
//设置窗口可见
jf.setVisible(true);
}
}