我主要使用ValidateCode组件实现字母数字验证码,利用ValidateCode的构造方法(图像宽度,图像高度,验证码位数,障碍线个数)、getBuffedImg()、getCode()等方法实现验证码,这样代码量小,使用方便,实现容易。

图2.1.1 ValidateCode包导入
程序代码如下:
java
package alphanum;
import javax.swing.JOptionPane;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import cn.dsna.util.images.ValidateCode;
public class TestValidateCode {
private static JFrame valFrm() { // 添加窗体
JFrame jFrame = new JFrame("字母数字验证码");
jFrame.setSize(300, 400);
jFrame.setLayout(null);
jFrame.setVisible(true);
return jFrame;
}
public static void showVal() { // 验证码添加
ValidateCode validateCode = new ValidateCode(200, 70, 4, 100); // 实例化验证码组件
JLabel jLabel = new JLabel(); // jlabel用于显示验证码图像
jLabel.setBounds(50, 50, 200, 70);
ImageIcon valImg = new ImageIcon();
valImg.setImage(validateCode.getBuffImg()); // 使用getBuffImg获取BufferedImage对象
jLabel.setIcon(valImg); // 将验证码图像显示
JFrame jFrame = valFrm();
//JLabel codeLabel = new JLabel(validateCode.getCode()); // 使用getCode方法获取验证码
//codeLabel.setBounds(120, 150, 100, 30);
JTextField inputField = new JTextField();
inputField.setBounds(100, 200, 100, 30);
JButton verifyButton = new JButton("验证");
verifyButton.setBounds(110, 250, 80, 30);
verifyButton.addActionListener(e -> {
String userInput = inputField.getText().trim();
if (userInput.equalsIgnoreCase(validateCode.getCode())) {
JOptionPane.showMessageDialog(jFrame, "验证成功!", "提示", JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(jFrame, "验证失败!", "提示", JOptionPane.ERROR_MESSAGE);
}
});
jFrame.add(jLabel);
//jFrame.add(codeLabel);
jFrame.add(inputField);
jFrame.add(verifyButton);
}
public static void main(String[] args) {
showVal();
}
}
运行结果如下:
