import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.Timer;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
/**
* JavaGUI 生成 驗證碼
*
* @author kaifang
*
*/
public class JavaYanZhengMa {
public static void main(String[] args) {
// 定義驗證碼字符。去除了O和I等容易混淆的字母(也可寫成)
final String[] scode = { "A", "B", "C", "D", "E", "F", "G", "H", "G",
"K", "M", "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X",
"Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
"k", "m", "n", "p", "q", "r", "s", "t", "u", "v", "w", "x",
"y", "z", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
// 創建Random對象
final Random rand = new Random();
// 創建窗體JFrame對象、放置驗證碼的JLabel對象、控制開始停止的JButton對象
final JFrame jf = new JFrame("驗證碼");
final JLabel jl = new JLabel("點擊開始");
final JButton jb = new JButton("開始");
// 創建可以間隔定時執行的Timer對象,間隔爲200毫秒,初始ActionListener爲null
final Timer times = new Timer(200, null);
// 獲取JFrame內容面板
Container con = jf.getContentPane();
// 設置內容面板佈局爲null
con.setLayout(null);
// 把標籤對象添加進內容面板
con.add(jl);
// 設置標籤文字格式
jl.setFont(new Font("幼圓", Font.PLAIN, 30));
// 設置標籤的擺放位置和大小
jl.setBounds(70, 30, 126, 36);
// 把按鈕添加進內容面板
con.add(jb);
// 設置按鈕的擺放位置和大小
jb.setBounds(90, 90, 90, 30);
// 爲按鈕註冊ActionListener事件
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 判斷驗證碼是否在滾動,是 則停止,否 則開始滾動
if (!times.isRunning()) {
times.start();
} else {
times.stop();
}
// 改變按鈕的文字,開始滾動後變爲停止,停止後變爲開始
if ("開始".equals(jb.getText())) {
jb.setText("停止");
} else {
jb.setText("開始");
}
// 爲Timer對象添加ActionListener事件,在事件中產生隨機驗證碼並實現驗證碼的滾動操作
times.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String str = "";
for (int i = 0; i < 4; i++) {
str += scode[rand.nextInt(scode.length)];
}
jl.setText(str);
}
});
}
});
// 設置JFrame大小
jf.setSize(260, 200);
// 窗體置頂顯示
jf.setAlwaysOnTop(true);
// JFrame不能改變大小
jf.setResizable(false);
// JFrame居中顯示
jf.setLocationRelativeTo(null);
// 顯示JFrame窗體
jf.setVisible(true);
// 設置JFrame關閉動作
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Java GUI 簡單抽獎演示,可以自行修改功能,Timer類的使用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.