JAVA版随机抽人

主函数

public class Main {public static void main(String[] args) {//这里存入数据String[] data = {"土一","李二","张三","李四","乔冠宇","王五"};MyJFrame frame = new MyJFrame(data);}
}

界面类

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;public class MyJFrame extends JFrame {String[] strings;Thread thread;public MyJFrame() throws HeadlessException {JOptionPane.showMessageDialog(null,"数据未传入","数据异常",JOptionPane.ERROR_MESSAGE);}public MyJFrame(String[] strings) throws HeadlessException {this.strings = strings;this.setSize(400,400);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setResizable(false);this.setTitle("抽取幸运儿");JPanel jPanel_body = new JPanel(new GridLayout(3,1));JPanel jPanel_top = new JPanel(new GridLayout(2,1));JPanel jPanel_top_top = new JPanel();jPanel_top.add(jPanel_top_top);JPanel jPanel_top_bottom = new JPanel();JLabel jLabel = new JLabel("新的幸运儿已经产生");jLabel.setFont(new Font("宋体",Font.BOLD,20));jPanel_top_bottom.add(jLabel);jPanel_top.add(jPanel_top_bottom);JPanel jPanel_center = new JPanel();JTextField field = new JTextField(18);field.setFont(new Font("宋体",Font.PLAIN,20));jPanel_center.add(field);JPanel jPanel_bottom = new JPanel();JButton button = new JButton("暂停");button.setPreferredSize(new Dimension(80, 32));jPanel_bottom.add(button);JButton jButton = new JButton("开始随机点人");jButton.setPreferredSize(new Dimension(80, 32));jPanel_bottom.add(jButton);jButton.addActionListener(new AbstractAction() {@Overridepublic void actionPerformed(ActionEvent e) {MyTask task = new MyTask(field,strings);if(thread==null){thread = new Thread(task);thread.start();}}});button.addActionListener(new AbstractAction() {@Overridepublic void actionPerformed(ActionEvent e) {if(thread!=null){thread.interrupt();thread = null;}}});jPanel_body.add(jPanel_top);jPanel_body.add(jPanel_center);jPanel_body.add(jPanel_bottom);this.add(jPanel_body);this.setVisible(true);}
}

线程类

import javax.swing.*;
import java.util.Random;public class MyTask implements Runnable{JTextField field;String[] strings;static Object object = new Object();public MyTask(JTextField field, String[] strings) {this.field = field;this.strings = strings;}@Overridepublic void run() {synchronized (object){Random random = new Random();while (true){int index = random.nextInt(strings.length);field.setText(strings[index]);}}}
}

程序展示

对代码进行解释

这里主要是运用到了JAVA中的GUI和线程的知识, 在界面类中,需要注意的是事件监听这里,两个按钮分别控制了线程的关闭和启动,而在线程类中,我们要注意的是创建新任务时传参的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/315717.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Note: Balanced Diet

Balanced Diet 平衡膳食 diet balanced Wang Peng earned his living by running a barbecue restaurant, which served delicious bacon, fried chiken breast and mutton roasted with pepper and garlic. 王鹏经营一家烧烤餐厅来谋生,它提供美味的培根&#xf…

opencv期末练习题(5)附带解析

根据R、G、B的值实时修改图像的颜色 import cv2 import numpy as np""" 滑动块调整图像灰度1. 读取图片,并转为灰度图 2. 定义启动滑块和R、G、B滑块 3. 只有启动滑块的值为1时,拖动R、G、B滑块才生效 4. 根据R、G、B的值实时对修改图片的…

BIOS:计算机中的特洛伊木马

内容概述: 由于主板制造商在计算机启动时用来显示品牌徽标的图像分析组件相关的问题,多个安全漏洞(统称为 LogoFAIL)允许攻击者干扰计算机设备的启动过程并安装 bootkit。x86 和 ARM 设备都面临风险。主板固件供应链安全公司 Bin…

浅析PCIe 6.0功能更新与实现的挑战-4

低功耗L0p 引入L0p的主要目的是为了进一步优化PCIe链路的电源管理,降低能耗,并在不中断数据传输的情况下实现动态带宽调整。随着PCIe标准演进到6.0版本,对更高带宽、更低延迟和更高效能的需求日益增长,特别是在数据中心和其他高功…

机器学习逻辑回归

Logistic 回归是一种常用的处理二分类问题的线性模型。采用𝑦 ∈ {0, 1}以符合Logistic回归的描述习惯。 为了解决连续的线性函数不适合进行分类的问题,引入非线性函数𝑔:ℝ𝐷 → (0, 1)来预测类别标签的后验概率&…

实战入门 K8s剩下三个模块

1.Label Label是kubernetes系统中的一个重要概念。它的作用就是在资源上添加标识,用来对它们进行区分和选择。 Label的特点: 一个Label会以key/value键值对的形式附加到各种对象上,如Node、Pod、Service等等 一个资源对象可以定义任意数量…

提升软件质量与效率:UI自动化测试的重要性

在软件开发领域,UI自动化测试工具被广泛应用,其意义不仅仅体现在节省时间和资源上,更关系到软件质量的提升、团队效率的增加,以及用户体验的改善。本文将探讨使用UI自动化测试工具的重要性,以及它在软件开发生命周期中…

Python如何把类当做字典来访问及浅谈Python类命名空间

Python如何把类当做字典来访问 Python把类当做字典来访问 定义一个类将它实例化,我们可以通过obj.属性来访问类的属性,如果想获取类的所有实例变量,我们可以使用obj.__dict__来访问,如下: class A:def __init__(self)…

matplotlib绘制折线图

代码 import matplotlib.pyplot as plt import numpy as npdef get_data(txt_path: str , epoch: int 100, target: str , target_data_len: int 5): # 函数介绍 # https://blog.csdn.net/LQ_001/article/details/130127681?csdn_share_tail%7B%22type%22%3A%22blog%22%2…

我有实体店,为什么要做小程序

做小程序对于实体店来说有以下几个好处: 拓展线上渠道:随着移动互联网的普及,越来越多的消费者习惯在手机上进行购物和搜索相关信息。通过做小程序,你可以将线下实体店与线上渠道相结合,提供在线购买、预约、查询等功能…

【数学建模美赛M奖速成系列】Matplotlib绘图技巧(二)

Matplotlib绘图技巧(二) 写在前面2. 函数间区域填充函数fill_between()和fill()参数: 3. 散点图 scatter4. 直方图 hist5. 条形图 bar5.1 一个数据样本的条形图参数: 5.2 多个数据样本进行对比的直方图5.3 水平条形图参数 5.4 绘制…

常见HTTP 500错误发生原因及解决办法剖析

​  对于网站运营者来说,提到500内部服务器错误并不陌生。互联网行业对它的称呼有好几种,如“500内部服务器错误”、“HTTP 500 - 内部服务器错误”、“临时错误 (500)”、“内部服务器错误”。尽管叫法不同,但根本问题是相同的。 目前&…