随机抽奖小程序_在线随机抽号小程序

随机抽奖小程序_在线随机抽号小程序本实例使用随机数字生成5位抽奖号码,并显示在窗体的5个文本框中。当用户单击"开始"按钮时,将启动一个线程对象为5个文本框生成随机数字。单击"抽奖"按钮时,线程对

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

本实例使用随机数字生成5位抽奖号码,并显示在窗体的5个文本框中。当用户单击”开始”按钮时,将启动一个线程对象为5个文本框生成随机数字。单击”抽奖”按钮时,线程对象停止运行,并且将准确的中奖号码显示在信息文本框中。

开发一个抽奖小工具的实例。

(1)自定义文本框组件,把5个生成随机数的文本框的公共属性抽象定义到该文本框。

package com.lzw;  
import java.awt.Font;  
import javax.swing.JTextField;  
import javax.swing.SwingConstants;  
//自定义的文本框组件  
public class NumField extends JTextField {  
    private static final Font numfont = new Font("", Font.BOLD, 48);//定义文本框使用的字体  
   public NumField() {  
        super();   //执行父类构造方法  
        setHorizontalAlignment(SwingConstants.CENTER);  //设置文本居中对齐  
        setFont(numfont);   //设置字体  
        setFocusable(false); //取消焦点  
    }  
} 

(2)编写抽奖窗体。

public class Lottery extends JFrame { private JTextField infoField; //抽奖号码确认文本框  private NumField[] numFields; //随机号码文本框数组  private RandomNum randomThread=new RandomNum(); public static void main(String args[]) { EventQueue.invokeLater(new Runnable() { public void run() { try { Lottery frame = new Lottery(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } //创建窗体界面的构造方法  public Lottery() { super(); final BorderLayout borderLayout_1 = new BorderLayout(); borderLayout_1.setVgap(10); getContentPane().setLayout(borderLayout_1); //设置布局管理器  setBounds(100, 100, 420, 256); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JPanel contentPanel = new JPanel(); //创建中间的内容面板  final BorderLayout borderLayout = new BorderLayout(); borderLayout.setVgap(10); borderLayout.setHgap(10); contentPanel.setLayout(borderLayout); //设置内容面板布局管理器  getContentPane().add(contentPanel); //添加内容面板到窗体  final JPanel numPanel = new JPanel(); //创建显示随机数的面板  contentPanel.add(numPanel); //添加随机数面板到内容面板  final GridLayout gridLayout = new GridLayout(1, 0); gridLayout.setHgap(10); numPanel.setLayout(gridLayout); //设置随机数面板布局管理器  numFields = new NumField[5]; //创建随机数文本框数组  for(int i=0;i<numFields.length;i++){ //初始化随机数文本框  numFields[i]=new NumField(); //初始化数组元素  numPanel.add(numFields[i]); //添加文本框到随机数面板   } final JPanel infoPanel = new JPanel(); //创建显示抽奖号码的面板  infoPanel.setLayout(new BorderLayout()); //设置面板布局管理器  contentPanel.add(infoPanel, BorderLayout.SOUTH); //添加面板到窗体  final JLabel label_1 = new JLabel(); //布局抽奖号码面板  label_1.setFont(new Font("", Font.BOLD, 20)); label_1.setText("随机抽奖的中将号码是:"); infoPanel.add(label_1, BorderLayout.WEST); infoField = new JTextField(); infoPanel.add(infoField); final JLabel logoLabel = new JLabel(); //布局LOGO标签  logoLabel.setFont(new Font("隶书", Font.PLAIN, 72)); logoLabel.setHorizontalAlignment(SwingConstants.CENTER); getContentPane().add(logoLabel, BorderLayout.NORTH); logoLabel.setText("随机抽奖"); final JPanel controlPanel = new JPanel(); //创建控制按钮面板  final FlowLayout flowLayout = new FlowLayout(); flowLayout.setHgap(25); controlPanel.setLayout(flowLayout); //设置面板布局  getContentPane().add(controlPanel, BorderLayout.SOUTH); //添加面板到窗体底部  final JButton startButton = new JButton(); //创建开始按钮  startButton.addActionListener(new ActionListener() { //添加事件监听器  public void actionPerformed(final ActionEvent e) { do_startButton_actionPerformed(e); } }); startButton.setText("开始"); controlPanel.add(startButton); //添加按钮到面板  final JButton lotteryButton = new JButton(); //创建抽奖按钮  lotteryButton.addActionListener(new ActionListener() { //添加事件监听器  public void actionPerformed(final ActionEvent e) { do_lotteryButton_actionPerformed(e); } }); lotteryButton.setText("抽奖"); controlPanel.add(lotteryButton); final JButton exitButton = new JButton(); //创建退出按钮  exitButton.addActionListener(new ActionListener() { //添加事件监听器  public void actionPerformed(final ActionEvent e) { do_exitButton_actionPerformed(e); } }); exitButton.setText("退出"); controlPanel.add(exitButton); } // 生成随机数字的内部线程类  class RandomNum extends Thread { private boolean stop=false; //线程状态变量  public void run() { while (!stop) { for (final NumField nf : numFields) { try { Thread.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } final int num = (int) (Math.random() * 10); //生成随机数   EventQueue.invokeLater(new Runnable() { public void run() { nf.setText(num + ""); } }); } } } //停止线程的方法  public void stopLottery() { this.stop = true; } } // 开始按钮的事件处理方法  protected void do_startButton_actionPerformed(final ActionEvent e) { if(randomThread!=null) //如果存在上一个线程对象  randomThread.stopLottery(); //停止它  randomThread=new RandomNum(); //创建新的线程对象  randomThread.start(); //启动线程  } //抽奖按钮的事件处理方法  protected void do_lotteryButton_actionPerformed(final ActionEvent e) { if(randomThread!=null) //如果存在线程对象  randomThread.stopLottery(); //停止它  try { randomThread.join(); //等抽奖线程结束  } catch (InterruptedException e1) { e1.printStackTrace(); } EventQueue.invokeLater(new Runnable() { //在事件队列中更新抽奖信息  public void run() { String code = ""; //抽奖代码字符串  for (final NumField nf : numFields) { //遍历数字文本框  code += nf.getText(); //连接5个数字字符   } infoField.setText(code); //更新抽奖信息文本框   } }); } // 退出按钮的事件处理方法  protected void do_exitButton_actionPerformed(final ActionEvent e) { System.exit(0); //退出程序   } }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/167551.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 本人精心收集的近80个国内最好的嵌入式技术相关网站和论坛和博客[通俗易懂]

    本人精心收集的近80个国内最好的嵌入式技术相关网站和论坛和博客[通俗易懂]注: 这是本人学习嵌入式时收集80个的相关网站和论坛,这是2013年最新的,保证全部是国内的比较好的,而且全部可用!学习这事儿缺乏的就是好的资源和信息,现在你全部都拥有了!只要静下心来好好专研学习,那么你早晚会成为嵌入式专家! 最后祝愿大家都早日成为嵌入式高手!  .C语言中文网 http://see.xidian.edu.cn/cpp/ .中国IT实验室 http://c.c

    2022年10月31日
  • java版我的世界下载_我的世界java版

    java版我的世界下载_我的世界java版我的世界java版这个所谓的java版可能大家不是很熟悉,java版就是《我的世界》是整个游戏的初始版本,目前Java版本是全平台游戏版本中内容最多,更新速度最快的版本。此外,Java版本拥有大规模的全球玩家社区,得益于它可拓展的特性,拥有百万件玩家创意作品,这些都使得Java版本是核心玩家最喜爱的版本之一。我的世界java版手机版种子:出生点前有丛林神庙的地图种子在这个种子地图上,你会出生在一座…

  • 遗传算法_aforge遗传算法

    遗传算法_aforge遗传算法一、遗传算法简介:遗传算法是进化算法的一部分,是一种通过模拟自然进化过程搜索最优解的方法。二、遗传算法思想:遗传算法组成:1.编码2.适应度函数3.遗传算子:选择、交叉、变异4.运行参数借鉴生物进化论,遗传算法将要解决的问题模拟成一个生物进化的过程,通过复制、交叉、突变等操作产生下一代的解,并逐步淘汰掉适应度函数值低的解,增加适应度函数值高的解。这样进化N代后就很有可能会进化出适应度函数值很高的个体。2.1.编码将问题的解编码称字符串形式才能使用遗传算法。最简单的一种编码是二进制编码,即

  • sdio接口定义_sdio接口

    sdio接口定义_sdio接口转:https://www.cnblogs.com/hellokitty2/p/10981084.htmlSDIO接口一、SDIO简介SDIO接口是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备。SDIO1.0标准定义了两种类型的SDIO卡:1.全速的SDIO卡,传输率可以超过100Mbps;2.低速的SDIO卡,支援的时脉速率…

  • BAT批处理解决ARP***

    BAT批处理解决ARP***

  • js 字符串转数组,js 字符串截取

    js 字符串转数组,js 字符串截取js字符串转数组:varstring="20170524191718-173910&amp;135562983280&amp;1";varstr=string.split("&amp;");console.log(str);结果显示:console.log(str[2]);//1js字符串截取:varfilename=$("#"+fileid).v…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号