java食物抽奖器

该程序通过Java实现了一个图形界面的食物抽奖器,用户可以在界面上启动和截取食物抽奖。程序使用数组存储食物,点击启动按钮后,食物名称在文本框中滚动,点击截取按钮会停止滚动并记录当前显示的食物,将其保存到指定文件中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本程序实现在图形界面上对食物随机抽取。需要定义一个数组存放食物,再创建一个窗体,放置面板后,在面板里面添加一个显示食物的文本框,并且放入两个按钮,一个用来启动程序,一个进行截取。当点击启动按钮后,文本框的食物进行不断地翻滚,点击截取按钮,文本框停止截取,截取到的食物显示在屏幕上,并且在一个指定路径里立即创建一个文件来存放抽取的数据,以时间加上食物名称保存。

首先定义数组和窗体,面板和组件。定义的代码如下。
//窗口
private JFrame randomFrame = new JFrame();
// 创建一个Panel对象
private JPanel randomPanel = new JPanel();
/启动抽取按钮/
private JButton btnStart = new JButton(“启动抽取”);
/启动截取按钮/
private JButton btnCancel = new JButton(“截取食物”);
//文本框
private TextField tf = new TextField(30);
/文本提示控件/
private JLabel tips = new JLabel(“启动抽取食物!”);
/文本提示控件/
private JLabel tips2 = new JLabel(“这里放入抽取结果!”);
//放入食物
private String[] name = { “包子”, “水煮面”, “蛋炒饭”, “水煮鱼”, “鸡排饭”, “凉粉”, “寿司”, “小炒菜”, “火锅”, “热干面” };

然后设置窗体,添加按钮组件等组成一个界面。为了实现按钮的作用,需要在主方法中使用接口ActionListener和Runnable,生成两个方法,addListener()和run(),并且给按钮绑定监听事件。同时设置一个标记isScroll来判断启动情况,isScroll为false时暂停。

给按钮绑定监听,以及addListener()和run()的代码如下。
private void addListener() {
btnStart.addActionListener(this);
btnCancel.addActionListener(this);
}
//按钮事件
@Override
public void actionPerformed(ActionEvent e) {
Object obj = e.getSource();
if (obj == btnStart) {

synchronized (this) {
notify();
isScroll = true;
tips.setText(“开始截取吧!”);
}
}
}
}
if (obj == btnCancel) {
synchronized (this) {
isScroll = false;
tips.setText(“请你在启动后再开始截取呦!”);
}
}
}
@Override
public void run() {
while (true) {
try {//isScroll为false时暂停
if (!isScroll) {
synchronized (this) {
this.wait();
}
}
ChoseOne();
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
这里定义了一个方法ChoseOne()用来随机选出食物,并且把结果放入文件。代码如下。
public void ChoseOne() {
//随机抽取食物
int length = name.length;
Random myRandomName = new Random();
int RN = myRandomName.nextInt(length);
tf.setText(name[RN]);
tips2.setText(“您抽取的是:”+name[RN]);
//获取抽取食物胡时间
Date date = new Date();
SimpleDateFormat dateFormat= new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);
File file = new File(“D:\food.txt”);
//将时间和抽取结果放入文件中
try (FileWriter fw = new FileWriter(file);
BufferedWriter bw = new BufferedWriter(fw)){

bw.write(dateFormat.format(date)+name[RN]);
bw.flush();
} catch (IOException e) {
e.printStackTrace();
}

在main方法中启动程序,开启线程,现象如下图。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值