小浩之利用Java完成一个抽奖小程序

1.抽奖小程序的制作,首先需要窗体的建立,利用Jtextarea文本框,以及多线程的运用

public class LotteryUI {

    public void initUI() {
        //界面的设置
        JFrame jf = new JFrame();
        //界面大小
        jf.setSize(500, 500);
        //界面名称
        jf.setTitle("小浩的抽奖小程序");
        //窗口关闭
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //窗体居中的展示
        jf.setLocationRelativeTo(null);
        //流动布局的设置
        jf.setLayout(new FlowLayout());
        //按钮在窗体的添加
        JButton jbu = new JButton("开始");
        jf.add(jbu);
        JButton jbu2 = new JButton("暂停");
        jf.add(jbu2);
        JButton jbu3 = new JButton("继续开始");
        jf.add(jbu3);
        //编辑文件,文本框的设置
        JTextArea jta = new JTextArea();
        Dimension ds=new Dimension(400,300);
        jta.setPreferredSize(ds);
//        jta.setPreferredSize(new Dimension(400, 300));
        jf.add(jta);
        //窗体可视化
        jf.setVisible(true);
        //监听器的添加和设置
        ButtonListener0219 listener = new ButtonListener0219(jf.getGraphics(), jta);
        jbu.addActionListener(listener);
        jbu2.addActionListener(listener);
        jbu3.addActionListener(listener);
    }
    public static void main(String[] args) {
        new LotteryUI().initUI();
    }
}

2.利用监听器来获取按钮上的内容来控制线程

public class ButtonListener0219 implements ActionListener {
    public Graphics g;
    //文本框的设置,与文本栏相区别,可以设置指定几行几列的文本框
    public LotteryThread lotteryThread;
    public JTextArea jta;
    //构造方法进行参数的传递,文本框以及画笔的传递
    public ButtonListener0219(Graphics g,JTextArea jta ) {
        this.g = g;
        this.jta = jta;
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        String name = e.getActionCommand();

        if ("开始".equals(name)) {
            if (lotteryThread==null){
                lotteryThread=new LotteryThread(g,jta);
                //开始启动线程
                lotteryThread.start();
            }
        }else if ("暂停".equals(name)) {
            //控制线程暂停
            lotteryThread.flag1=2;
        }else if ("继续开始".equals(name)) {
            lotteryThread.flag1=1;
            }
        }
    }

3.多线程运行,来实现滚动抽奖

//线程类
public class LotteryThread extends Thread{
    public int number ;
    public Graphics g;
    public JTextArea jta;
    public boolean flag=true;
    public int flag1=1;
    public LotteryThread(Graphics g,JTextArea jta ) {
        this.g = g;
        this.jta = jta;
    }
    //启动线程执行的方法:run方法执行完,该线程结束,一旦结束不能重新启动
    //不能手动调用
    public void run() {
        System.out.println("启动线程.." + this.getName());
        while(flag) {
            if (flag1==1) {
                //控制线程暂停
                number = (int) (Math.random() * 100);
                //设置当前组件所使用的字体和大小设置
                jta.setFont(new Font("宋体", 10, 68));
                jta.setText(number + "");
                // 随机数组
                System.out.println("随机:" + number);
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }else if (flag1==2){
                System.out.println("本轮的超级超级大奖的幸运数字为:"+number+"  让我们恭喜这位幸运观众");
            }
        }
        System.out.println("线程结束");
    }
}

4,效果如下

 

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网友小浩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值