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

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值