今天用一个程序模拟一个从1-32之间,随机抽取7组号码的抽奖程序

* 需要使用Java的图形界面知识

* 窗口  JFrame

* 面板  JPanel

* 显示文本信息的标签  JLabel

* 文本框 JTextField

* 按钮  JButton

还涉及到线程Thread

先看效果图:

但是这里留一个问题?就是去除重复数字(可以自己先实现,后期我会上传的)

下面看看代码,代码中有注释,不懂留言:

package thread.test1;

import java.awt.BorderLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.*;

/**

* 本程序模拟一个从1-32之间,随机抽取7组号码的抽奖程序

* 需要使用Java的图形界面知识

* 窗口 JFrame

* 面板 JPanel

* 显示文本信息的标签 JLabel

* 文本框 JTextField

* 按钮 JButton

*

* */

public class GoodLuck_1 extends JFrame {

JPanel pn1=null;

JPanel pn2;

JPanel pn3;

JTextField tf=null;

JLabel msg=null;

JButton btn1;

JButton btn2;

boolean flag=true;//用于判断是否继续输出出奖号码的标志。

//在构造器中,初始化界面

public GoodLuck_1(){

tf=new JTextField(40);//参数意思是,该文本框能够放多少个字符

pn1=new JPanel();

//组件放在面板上

pn1.add(tf);

//将面板放在窗口上,当前窗口对象就是this,放在顶部(上北)

this.add(pn1, BorderLayout.NORTH);

/*

* Java的JFrame对象,默然的布局管理器是“边界布局” 类名是BorderLayout

*

* */

msg=new JLabel("欢迎访问好运气抽奖程序!");

pn2=new JPanel();

pn2.add(msg);

//面板放在窗体上

this.add(pn2, BorderLayout.CENTER);

//底部的按钮部分

btn1=new JButton("开始");

//给开始按钮加入事件

btn1.addActionListener(new ActionListener(){

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

//给出奖标志赋值

/*

flag=true;

chouJiang();

*/

/*

* 必须使用多线程技术,重新启动一个新的线程,去赋值flag

* 接着调用chouJiang(), 才可以是程序恢复响应。

* */

class ThreadStart extends Thread {

@Override

public void run() {

// TODO Auto-generated method stub

//在这里去调用抽奖方法

flag=true;

chouJiang();

}

}

//必须将上面的线程内部类,实例化,之后启动

new ThreadStart().start();

}

});

btn2=new JButton("停止");

//给停止按钮添加事件监听

btn2.addActionListener(new ActionListener(){

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

//必须启动一个新的停止线程,才能终止无限循环

class ThreadStop extends Thread{

@Override

public void run() {

// TODO Auto-generated method stub

flag=false;

}

}

//启动上面的内部类线程

new ThreadStop().start();

}

});

pn3=new JPanel();

pn3.add(btn1);

pn3.add(btn2);

this.add(pn3, BorderLayout.SOUTH);

//设置窗口的属性

this.setTitle("好运气中奖程序1.0");

this.setSize(500, 400);

this.setLocation(100, 50);

//JFrame默认的关闭按钮,只是隐藏窗口,需要重写设计关闭功能

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

//chouJiang();

}

//对于一个复杂的任务,首先想到的是封装方法

public void chouJiang(){

/*

* 由于开始按钮启动后,什么时候停止,不确定,因此循环次数也不确定

* 需要使用while循环,而且开始就是无限循环

* */

String text=""; //作用是显示在文本框中的号码序列

while(flag){

/**

* 每次循环都是从1-32之间,随机抽取7组号码,拼成字符串

* 显示在文本框中

* */

text=""; //每次显示号码时,都重新显示新抽的号码

for(int i=0;i<7;i++){

int m=(int)(Math.random()*32+1);

if(m<10){

text=text+" 0"+m;

}

else {

text=text+" "+m;

}

}

//这里需要一点时间的停顿,否则循环太快,会出问题

try {

Thread.sleep(20);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//显示在文本框中

tf.setText(text);

}

}

public static void main(String[] args) {

//在正在的开发中,main方法中的代码,越少越好。

new GoodLuck_1();

}

}

有需要的自己那过去试一试,玩一玩!

原文:http://www.cnblogs.com/julinhuitianxia/p/6921793.html

java抽奖窗口程序_java模拟一个抽奖程序相关推荐

  1. java抽奖程序_java模拟一个抽奖程序

    今天用一个程序模拟一个从1-32之间,随机抽取7组号码的抽奖程序 * 需要使用Java的图形界面知识 * 窗口  JFrame * 面板  JPanel * 显示文本信息的标签  JLabel * 文 ...

  2. java的概率的程序_java实现一个抽奖概率类

    在一些项目需求中,可能会遇到抽奖问题,如提供一系列奖品及获奖概率,要求根据概率返回每次抽到的奖品.以下是本人在实际项目中写的一个抽奖工具类,与大家共同分享: import java.util.Arra ...

  3. 嵌入式单片机基础篇(三十六)之STM32F1SPI标准接口程序以及模拟SPI标准接口程序讲解

    STM32F1SPI标准接口程序以及模拟SPI标准接口程序讲解 一.SPI标准接口初始化: 1.SPI 内部结构简明图 2.上一篇文章提到,spi标准协议包含4条信号线.时钟相位.时钟极性.数据单字节 ...

  4. c语言计算二次函数顶点坐标,C语言编写一个求一元二次方程的实根的程序。 编辑一个小程序去做一元二次方程的求解(b^24ac)...

    导航:网站首页 > C语言编写一个求一元二次方程的实根的程序. 编辑一个小程序去做一元二次方程的求解(b^2>4ac) C语言编写一个求一元二次方程的实根的程序. 编辑一个小程序去做一元二 ...

  5. 用java做一个模拟彩票程序_JAVA模拟----- 彩票机子-----抽奖过程的实例化

    /* 时间: 2012-10-05 作者: 烟大阳仔 程序要求: 模拟彩票抽奖机的功能编写一个程序,实现随即输出六个号码 程序解释: 该段程序没有传递参数 */ class Day1005_Caipi ...

  6. java关闭窗口按钮_java swing 使用按钮关闭窗口

    目的是给JButton添加点击操作,使指定JFrame窗口关闭. 网上不少说法是采用frame.dispose();的方法 但是采用frame.dispose();并没有使添加在frame上的wind ...

  7. python设计抽奖游戏 球_Python模拟轮盘抽奖游戏

    题目如下: 模拟轮盘抽奖游戏 轮盘分为三部分: 一等奖, 二等奖和三等奖; 轮盘转的时候是随机的, 模拟本次活动1000人参加, 模拟游戏时需要准备各等级奖品的个数. #方法1: import ran ...

  8. java泡妞代码_java泡妞小程序

    一个小小的程序 把这些天学习完后的知识运用于 这个小程序中 父类 Plan public abstract class Plan { private MeiZi meiZi; /*1.找目标      ...

  9. java修改窗口形状_java – 使用透明图像的AWT自定义窗口形状

    我正在尝试使用AWT创建UI.我想只使用图像和透明组件.现在我无法理解如何制作一个主窗口,它应该是一个自定义形状的PNG图像.图像中透明的所有区域都用黑色替换.这是我使用的代码: public cla ...

最新文章

  1. java 文件路径问题_java 文件路径问题
  2. 启明云端用一张表格带你了解sigmastar SSD20x系列的区别!帮助你快速完成选型!
  3. [剑指offer][JAVA]面试题第[10-1]题[斐波那契数列][动态规划][记忆化递归]
  4. 各种机器学习的应用场景分别是什么
  5. 第四次作业随笔(计算器第二步)
  6. 平面设计中都有哪些风格?常用的风格有哪些?
  7. oracle px execute reply,(转)PX Deq: Execute Reply 案例说明
  8. 你可以穿裙子,但是请放长你的裙摆
  9. 软路由系统, OpenWrt (Lede), Ubuntu server, 爱快, ROS, Pfsense, m0n0wall, OPNsense
  10. 发布自己的开源库到Cocoapods及部分常见错误
  11. 2022-04-14 工作记录--LayUI-数据表格中固定列对应的合计部分也实现固定
  12. 江苏秦淮河清淤工程每天捞出五六吨漂浮物
  13. 金融科技巨头蚂蚁金服:香港和上海启动IPO程序
  14. selenium.common.exceptions.SessionNotCreatedException: Message: session not created exception: Missi
  15. 饥荒服务器模组全部显示冲突,饥荒联机版TGP多层世界服务端整合包及MOD添加设置教程_游戏堡...
  16. 用matlab绘制函数图形,matlab函数绘制 用matlab怎样绘制函数图形
  17. Solver lbfgs supports only 'l2' or 'none' penalties, got l1 penalty.解决办法
  18. [Story][Game]“理想恋人游戏”
  19. “宝石迷阵”中游戏算法实现
  20. android小程序日历,微信小程序:日历功能实现

热门文章

  1. 传奇服务器怎么修改升级武器成功,【图片】升级武器的经验【传奇百区吧】_百度贴吧...
  2. 电脑组装配置单及组装电脑图文详细教程
  3. 2017山西特岗计算机试题,2017年山西特岗教师招聘考试-考试习题 中小学音乐
  4. 通过vue实现在线直播源码的直播点赞
  5. 好游戏讲解c++我的世界代码
  6. Vue中的ajax请求、Vuex、Vue UI组件库
  7. Python中的取整运算
  8. 正则自编码器之去噪自编码器
  9. Spring 生命周期回调机制
  10. 关于校园网限制电脑不能为手机开热点的解决办法