实现一个Java抽奖程序

用到Java swing,thread线程,File文件操作,事件处理。

package GIFT;import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.ArrayList;
import java.util.Random;public class Window  implements ActionListener {JFrame window;JPanel jPanel1,jPanel2,jPanel3;//面板JLabel jLabel1,jLabel2,jLabel3,jLabel4;JTextField name,count;//文本框,用于显示名字,奖项人数JButton gift,openfile,savefile;//抽奖按钮和导入文件,保存文件JComboBox jComboBox;//一二三等奖选择boolean ifStart = true;ArrayList<String> arrayList = new ArrayList<>();  //定义一个字符串链表File file = new File("award.txt");     //中奖名单//判断文件是否存在public boolean isexist(File file){boolean flag=false;if(!file.exists()){return flag;}else {flag=true;return flag;}}//如果文件存在,则删除文件重新创建文件public void create(boolean flag){if(flag){file.delete();}file=new File("award.txt");}//构造函数public Window(){//设置窗口参数window=new JFrame("抽奖");jPanel1=new JPanel();jPanel2=new JPanel();jPanel3=new JPanel();//面板1,用于显示抽奖过程名字以及抽奖按钮name=new JTextField(10);name.setPreferredSize(new Dimension(200,80));name.setEditable(false);//不可编辑name.setOpaque(true);  //边框jLabel1=new JLabel("名字");jLabel2=new JLabel("抽奖");gift=new JButton("抽奖");jPanel1.add(jLabel1);jPanel1.add(name);jPanel1.add(jLabel2);jPanel1.add(gift);//奖项选择jComboBox=new JComboBox();jComboBox.addItem("一等奖");jComboBox.addItem("二等奖");jComboBox.addItem("三等奖");jLabel3=new JLabel("奖项选择");jLabel4=new JLabel("人数设置");count=new JTextField(10);jPanel2.add(jLabel3);jPanel2.add(jComboBox);jPanel2.add(jLabel4);jPanel2.add(count);//导入导出文件openfile=new JButton("导入抽奖名单");savefile=new JButton("导出等奖名单");jPanel3.add(openfile);jPanel3.add(savefile);window.add(jPanel1);window.add(jPanel2);window.add(jPanel3);window.setLayout(new GridLayout(3,1));   //m行n列,布局window.setBounds(400,200,600,500);window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);window.setVisible(true);//添加监听gift.addActionListener(this);openfile.addActionListener(this);savefile.addActionListener(this);//创建一个新文件保存获奖的名单boolean flag=false;flag=isexist(file);//判断文件是否存在create(flag);//新建文件}public void actionPerformed(ActionEvent e){Object object = e.getSource();if(object == openfile){fileOpen();    //导入文件}if(object == gift){ifStart = true;     //标志开始new Thread(new Runnable() {@Overridepublic void run() {int time = 500;     //设置一个抽奖时长int i = 30;       //设置一个开始sleep时长int j = Integer.parseInt(count.getText());while(j>0) {   //人数大于0i = 25;while (true) {try {if (!ifStart) {synchronized (this) {this.wait();}}Random random = new Random();if (arrayList.size() == 0) {  //用于判断是否有名单在链表中break;}int rd = random.nextInt(arrayList.size());name.setText(arrayList.get(rd));   //将随机产生的数当作链表的下标if (i < time) {Thread.sleep(i);i += 25;} else {break;}} catch (InterruptedException e) {e.printStackTrace();}}//把文本框1的内容写进award.txt中try {String name1 = name.getText();if (name1.trim().length() != 0 && arrayList.contains(name1)) {String price = (String) jComboBox.getSelectedItem();   //获取当前数据项FileWriter fileWriter = new FileWriter(file, true);fileWriter.write(name1 + " " + price);fileWriter.write("\r\n");fileWriter.close();Thread.sleep(2000);}arrayList.remove(name1);} catch (IOException e3) {System.out.println(e3);}catch (InterruptedException e2){e2.printStackTrace();}j--;}}}).start();}if(object == savefile){    //显示award.txt中的内容,并创建一个窗口显示名单JFrame jFrame = new JFrame();JTextArea jTextArea = new JTextArea();jTextArea.setEditable(false);JScrollPane jScrollPane = new JScrollPane(jTextArea);jFrame.add(jScrollPane,BorderLayout.CENTER);jFrame.setTitle("中奖名单");jFrame.setSize(300,350);jFrame.setVisible(true);jFrame.setLocation(250,200);try{FileReader inOne = new FileReader(file);BufferedReader inTwo = new BufferedReader(inOne);String s = null;while((s = inTwo.readLine())!=null){s = s.trim();jTextArea.append(s + '\n');}}catch (IOException e1){System.out.println(e1);}}}private void fileOpen(){JFileChooser jFileChooser = new JFileChooser(new File("C:"));FileNameExtensionFilter filter = new FileNameExtensionFilter("txt", "txt");jFileChooser.setFileFilter(filter);jFileChooser.setMultiSelectionEnabled(true);jFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);jFileChooser.showDialog(jFileChooser,"确定");File[] file = jFileChooser.getSelectedFiles();for(File s:file){System.out.println(s);}//读取listname文件内进arrayList中try{FileReader inOne = new FileReader(file[0]);BufferedReader inTwo = new BufferedReader(inOne);String name = null;while((name = inTwo.readLine()) != null){name = name.trim();arrayList.add(name);}}catch (IOException e){System.out.println(e);}}
}
 public static void main(String []args){Window window=new Window();}

java---抽奖小程序相关推荐

  1. 幸运抽奖小程序-java基础知识

    目录 1.前言 2.幸运抽奖小程序LuckyDraw.java 1.前言 大学没学好java,为了学代码审计,得重新拾起java了.世界上本没有代码语言,敲的人多了,便成了语言. 2.幸运抽奖小程序L ...

  2. Android抽奖小程序

    Android的代码结构 Android和JavaSE编程的不同之处就在于Android的组件和逻辑代码是完全分开的,在一个xml文件中添加组件,设置组件的属性,并且对组件进行布局.保存xml文件后, ...

  3. 看看微博、微信、购物车、抽奖小程序是如何使用Redis数据结构进行实战演练的?

    大家都知道,现在只要是个系统就会有缓存的存在,而且几乎所有的系统都离不开Redis,可见Redis在现在系统的重要性. 所以,今天我们就来聊一下Redis,当然主要聊聊Redis在不同业务场景下的使用 ...

  4. Redis数据结构实战演练,看看微博、微信、购物车、抽奖小程序是如何使用的?

    大家都知道,现在只要是个系统就会有缓存的存在,而且几乎所有的系统都离不开Redis,可见Redis在现在系统的重要性. 所以,今天我们就来聊一下Redis,当然主要聊聊Redis在不同业务场景下的使用 ...

  5. 如何用excel制作xy曲线图_用Excel制作一个简易抽奖小程序,可一次抽取多人

    抽奖程序在很多场合都能派上用场,比如商场开业促销.课堂点名.抽取幸运观众等.我们今天就用Excel来制作一个简单的抽奖小程序,仅做参考. 抽奖小程序是下图这个样子的.我们按一下键盘上的F9键,即可完成 ...

  6. in java中文版百度云 thinking_小程序订阅消息推送(含源码)java实现小程序推送,springboot实现微信消息推送...

    前面写过一篇云开发实现小程序订阅消息(模板消息)推送的文章,<借助云开发实现小程序订阅消息和模板消息的推送功能>是有好多同学用的是Java写后台,所以今天就再来写一篇Java后台实现小程序 ...

  7. vue小米商城源代码_微信商城信息管理系统(java后台+小程序)

    前一段时间在公众号中发布了一套微信商城信息管理系统(java后台+小程序),也许大家可能都还记得.今天再给大家重复呈现一遍.重新梳理下,方便大家理解这是做什么用的,以便日后使用.开始正题 01 编写目 ...

  8. Excel抽奖小程序

    今天分享一个用Excel制作的抽奖小程序. 如上图,制作一个抽奖小界面,滚动显示区域写入"=INDIRECT("A"&RANDBETWEEN(2,13))&quo ...

  9. java 后台 小程序微信支付

    java 后台 小程序微信支付 步骤说明: 微信公众平台支付接口调试工具 #1.生成字符串: appid=appId&body=测试商品名称&mch_id=商户号&nonce_ ...

  10. python 抽奖库_用 python 写一个年会抽奖小程序

    使用 pyinstaller 打包工具常用参数指南 pyinstaller -F demo.py 参数 含义 -F 指定打包后只生成一个exe格式的文件 -D –onedir 创建一个目录,包含exe ...

最新文章

  1. 详解布隆过滤器的原理、使用场景和注意事项
  2. 引用参考文献_引用参考文献时应注意些什么
  3. jQuery获取元素内容
  4. 花生增产万书波谋定中国农民丰收节交易会 山东科技最高奖
  5. JQuery判断radio是否选中,获取选中值
  6. Eclipse 中修改android的Default debug keystore 搬家、备份后启动Android PANIC :Could not open D:\java2\android\and
  7. MDK寄存器地址映射分析
  8. view 背景透明
  9. 7 orm 有批量更新_2020.12.24更新公告
  10. 做程序员的老婆应该注意的一些事情
  11. leetcode记录-罗马数字转整数
  12. Default changeset implementation allows only one operation
  13. 中国传统色的魅力|这8组中国风传统颜色你一定要收藏
  14. 分治算法 求第k小元素 O(n) O(nlog2^n)
  15. Phoenix FD Maya 软件插件
  16. Elasticsearch Index按日期切割并使用ILM Rollover
  17. [Flink基础]--什么是流处理?
  18. 智能建筑中高低压配电设备集成监控和管理系统应用分析-李亚俊
  19. 计算机应用 退修后正刊录用,计算机应用退修,全是格式问题,能正刊录用吗??...
  20. 模拟山羊mmo服务器的位置,模拟山羊mmo老山羊在哪 老羊山位置一览

热门文章

  1. 用MFC开发1连连看辅助器
  2. JavaSwing实现简单连连看小游戏
  3. 城域网100G宽带传输设备实现客户接入链路告警
  4. SharePoint 使用 CMOS 上传、下载、删除文件,新增文件夹
  5. Dictionary:MAC字典最简解决方案
  6. addEventListener兼容性问题
  7. MicroDicom viewer(Dicom格式看图软件) v3.4.7官方版
  8. 用python做爬虫看图软件-RandomPicture
  9. Photoshop制作印章效果
  10. 计算机端口错误678,Win8宽带连接出现错误678的解决方法