Java GUI 簡單抽獎演示,可以自行修改功能,Timer類的使用

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);
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章