java---抽奖小程序
实现一个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---抽奖小程序相关推荐
- 幸运抽奖小程序-java基础知识
目录 1.前言 2.幸运抽奖小程序LuckyDraw.java 1.前言 大学没学好java,为了学代码审计,得重新拾起java了.世界上本没有代码语言,敲的人多了,便成了语言. 2.幸运抽奖小程序L ...
- Android抽奖小程序
Android的代码结构 Android和JavaSE编程的不同之处就在于Android的组件和逻辑代码是完全分开的,在一个xml文件中添加组件,设置组件的属性,并且对组件进行布局.保存xml文件后, ...
- 看看微博、微信、购物车、抽奖小程序是如何使用Redis数据结构进行实战演练的?
大家都知道,现在只要是个系统就会有缓存的存在,而且几乎所有的系统都离不开Redis,可见Redis在现在系统的重要性. 所以,今天我们就来聊一下Redis,当然主要聊聊Redis在不同业务场景下的使用 ...
- Redis数据结构实战演练,看看微博、微信、购物车、抽奖小程序是如何使用的?
大家都知道,现在只要是个系统就会有缓存的存在,而且几乎所有的系统都离不开Redis,可见Redis在现在系统的重要性. 所以,今天我们就来聊一下Redis,当然主要聊聊Redis在不同业务场景下的使用 ...
- 如何用excel制作xy曲线图_用Excel制作一个简易抽奖小程序,可一次抽取多人
抽奖程序在很多场合都能派上用场,比如商场开业促销.课堂点名.抽取幸运观众等.我们今天就用Excel来制作一个简单的抽奖小程序,仅做参考. 抽奖小程序是下图这个样子的.我们按一下键盘上的F9键,即可完成 ...
- in java中文版百度云 thinking_小程序订阅消息推送(含源码)java实现小程序推送,springboot实现微信消息推送...
前面写过一篇云开发实现小程序订阅消息(模板消息)推送的文章,<借助云开发实现小程序订阅消息和模板消息的推送功能>是有好多同学用的是Java写后台,所以今天就再来写一篇Java后台实现小程序 ...
- vue小米商城源代码_微信商城信息管理系统(java后台+小程序)
前一段时间在公众号中发布了一套微信商城信息管理系统(java后台+小程序),也许大家可能都还记得.今天再给大家重复呈现一遍.重新梳理下,方便大家理解这是做什么用的,以便日后使用.开始正题 01 编写目 ...
- Excel抽奖小程序
今天分享一个用Excel制作的抽奖小程序. 如上图,制作一个抽奖小界面,滚动显示区域写入"=INDIRECT("A"&RANDBETWEEN(2,13))&quo ...
- java 后台 小程序微信支付
java 后台 小程序微信支付 步骤说明: 微信公众平台支付接口调试工具 #1.生成字符串: appid=appId&body=测试商品名称&mch_id=商户号&nonce_ ...
- python 抽奖库_用 python 写一个年会抽奖小程序
使用 pyinstaller 打包工具常用参数指南 pyinstaller -F demo.py 参数 含义 -F 指定打包后只生成一个exe格式的文件 -D –onedir 创建一个目录,包含exe ...
最新文章
- 详解布隆过滤器的原理、使用场景和注意事项
- 引用参考文献_引用参考文献时应注意些什么
- jQuery获取元素内容
- 花生增产万书波谋定中国农民丰收节交易会 山东科技最高奖
- JQuery判断radio是否选中,获取选中值
- Eclipse 中修改android的Default debug keystore 搬家、备份后启动Android PANIC :Could not open D:\java2\android\and
- MDK寄存器地址映射分析
- view 背景透明
- 7 orm 有批量更新_2020.12.24更新公告
- 做程序员的老婆应该注意的一些事情
- leetcode记录-罗马数字转整数
- Default changeset implementation allows only one operation
- 中国传统色的魅力|这8组中国风传统颜色你一定要收藏
- 分治算法 求第k小元素 O(n) O(nlog2^n)
- Phoenix FD Maya 软件插件
- Elasticsearch Index按日期切割并使用ILM Rollover
- [Flink基础]--什么是流处理?
- 智能建筑中高低压配电设备集成监控和管理系统应用分析-李亚俊
- 计算机应用 退修后正刊录用,计算机应用退修,全是格式问题,能正刊录用吗??...
- 模拟山羊mmo服务器的位置,模拟山羊mmo老山羊在哪 老羊山位置一览