javaswing 随机验证码怎么做
时间: 2023-10-13 18:23:43 浏览: 90
可以使用 Java Swing 的 Graphics2D 类来绘制验证码,并使用 Random 类来生成随机字符和颜色。以下是一个简单的示例:
```java
import javax.swing.*;
import java.awt.*;
import java.util.Random;
public class CaptchaPanel extends JPanel {
// 验证码字符集
private static final String CHAR_SET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
// 验证码长度
private static final int CODE_LENGTH = 4;
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
// 设置背景颜色
g2d.setColor(Color.WHITE);
g2d.fillRect(0, 0, getWidth(), getHeight());
// 生成随机验证码
Random random = new Random();
StringBuilder code = new StringBuilder();
for (int i = 0; i < CODE_LENGTH; i++) {
code.append(CHAR_SET.charAt(random.nextInt(CHAR_SET.length())));
}
// 绘制验证码
int x = 10;
int y = 20;
for (int i = 0; i < CODE_LENGTH; i++) {
// 设置随机颜色
g2d.setColor(new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256)));
// 设置随机字体
g2d.setFont(new Font(Font.SANS_SERIF, Font.BOLD, random.nextInt(10) + 20));
g2d.drawString(String.valueOf(code.charAt(i)), x, y);
x += 30;
}
// 绘制干扰线
for (int i = 0; i < 10; i++) {
g2d.setColor(new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256)));
g2d.drawLine(random.nextInt(getWidth()), random.nextInt(getHeight()), random.nextInt(getWidth()), random.nextInt(getHeight()));
}
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 150);
frame.setLocationRelativeTo(null);
frame.add(new CaptchaPanel());
frame.setVisible(true);
}
}
```
在这个示例中,我们首先设置了背景颜色为白色,然后使用 Random 类生成随机验证码。接着,我们使用 Graphics2D 类的 drawString() 方法绘制验证码,并使用随机颜色和字体。最后,我们使用 drawLine() 方法绘制干扰线,增加验证码的安全性。
阅读全文