import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.TimerTask; /** * @author 2021/7/17 */ public class MyFrame extends JFrame { /**用于显示中奖者的文本控件*/ private JLabel label; /**用于触发抽取的按钮*/ private JButton button; /**抽奖名单*/ private String[] names = {"曹操","吕布","董卓","关羽","刘备","张飞","袁绍","诸葛亮"}; /**声明定时器:完全限定名*/ private java.util.Timer timer; /**标记是否停止:false*/ private boolean isStop; public MyFrame() { //设置窗口标题 setTitle("欢乐大抽奖"); //设置窗口大小 setSize(new Dimension(600,400)); //setSize(400,300); //设置窗口居中显示 setLocationRelativeTo(null); //设置当窗口关闭时退出JVM setDefaultCloseOperation(EXIT_ON_CLOSE); //固定窗口大小 setResizable(false); initUI(); } /** * 初始化UI控件(文本和按钮) */ public void initUI(){ //设置当前窗口的布局方式 setLayout(null); //创建JLabel对象 label = new JLabel("按下按钮开始抽奖!"); //设置标签的边界(坐标,宽高) label.setBounds(150,100,400,50); //设置字体 label.setFont(new Font("楷体",Font.BOLD,30)); //设置文本颜色 label.setForeground(new Color(255,0,0)); //将控件加入窗体中 add(label); //创建按钮 button = new JButton("抽取"); button.setBounds(200,200,200,50); button.setFont(new Font("楷体",Font.BOLD,30)); //将按钮加入窗体中 add(button); //为按钮绑定事件 button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(!isStop){ stop(); button.setText("开始抽取"); }else{ start(); button.setText("抽取"); } isStop = !isStop; } }); start(); } /**抽取*/ public void stop(){ //结束任务 timer.cancel(); //随机一个索引,作为中奖者的下标 } /**滚动播放抽奖名单*/ private void start(){ //使用定时器和定时任务轮流滚动显示抽奖名单 timer = new java.util.Timer(); timer.schedule(new TimerTask() { @Override public void run() { //随机一个索引,作为中奖者的下标 int index = (int)(Math.random() * names.length); String s = names[index]; //显示到文本标签控件中 label.setText(s); } }, 0, 100); } public static void main(String[] args) { //创建窗口 MyFrame mf = new MyFrame(); //显示窗口 mf.setVisible(true); } }