如何用java编写一个花名随机抽取器
2020博客之星年度总评选进行中:请为74号的狗子投上宝贵的一票!
我的投票地址:点击为我投票
文章目录
- 一.程序效果
- 二.需要用到的包
- 三.代码
- 1.相关实例对象,所以对象均为全局对象
- 2.建立窗体,并完成组件的初始化
- 3.添加“打开文件”按钮监听事件:
- 4.“关于”按钮监听事件
- 5.下拉列表框选择监听事件
- 6.“开始抽取”按钮监听事件
- 7.如果成功打开文件并读取,文本框显示内容
- 8.主方法
- 9.资源下载
一.程序效果
还记得以前上课的时候,老师会用自己写的一个抽取器抽取同学回答问题,当时想着我也要做一个,假期没事干,自学了java,闲来无聊,我也写一个,但是写的没有老师好,哈哈,好了说一下思路,先把界面布置好,然后逐一实现每个按钮的功能,其实也没什么难的。
二.需要用到的包
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
三.代码
1.相关实例对象,所以对象均为全局对象
private static JLabel jl= new JLabel("文件:");private static JTextField jt =new JTextField();private static JButton OpenButton =new JButton("选择文件");private static JTextField jt2 =new JTextField();//文本框 显示抽取名单private static JButton StartButton =new JButton("开始抽取");private static JLabel ClassjL= new JLabel("班级:");private static JTextField ClassjT =new JTextField();//显示班级private static JLabel NumjL= new JLabel("人数:");private static JTextField NumjT =new JTextField();//显示人数private static JLabel jl2= new JLabel("抽取模式:");private static JComboBox jc= new JComboBox();//下拉列表框private static JButton AboutButton =new JButton("关于");private static JOptionPane jo =new JOptionPane();//弹出一个提示框private static String[]s ;//用来存放人名private static Font font = new Font("宋体",Font.BOLD,18); //设置字体对象private static int Number=0;//用来存放抽取人数
2.建立窗体,并完成组件的初始化
private void windows() {JFrame jf =new JFrame ("花狗抽取器 本人博客:fdogcsdn.com");jf.setIconImage(new ImageIcon("Icon.jpg").getImage());Container c=jf.getContentPane();c.setLayout(new GridLayout(4,2,10,10)); OpenButton.setFocusPainted(false);StartButton.setFocusPainted(false);AboutButton.setFocusPainted(false);//去掉按钮文字旁边的虚线框JPanel jp1 =new JPanel();JPanel jp2 =new JPanel(new BorderLayout());JPanel jp3 =new JPanel();JPanel jp4 =new JPanel();//添加面板jt.setColumns(10);ClassjT.setColumns(6);NumjT.setColumns(4);jt2.setHorizontalAlignment(JTextField.CENTER);jc.addItem("--请选择--");jc.addItem("抽取一人");jc.addItem("抽取三人");jc.addItem("抽取五人");jp1.add(jl);jp1.add(jt);jp1.add(OpenButton);jp2.add(jt2,BorderLayout.CENTER);jp3.add(ClassjL);jp3.add(ClassjT);jp3.add(NumjL);jp3.add(NumjT);jp3.add(jl2);jp3.add(jc); jp4.add(StartButton);jp4.add(AboutButton);c.add(jp1);c.add(jp2);c.add(jp3);c.add(jp4);jf.setVisible(true);jf.setBounds(800, 200, 400, 500);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);getOpenButton(); //下面三个方法是用来监听按钮事件方法getAboutButton();getSrartButton();}
3.添加“打开文件”按钮监听事件:
private void getOpenButton() {OpenButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {JFileChooser fc =new JFileChooser();//这个对象就是我们点击打开文件,出来的文件选择器fc.setCurrentDirectory(new File("."));//指定当前默认目录fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);//可以选择只打开文件或者文件夹fc.setMultiSelectionEnabled(false);//是否允许多选文件int i =fc.showOpenDialog(getContentPane());if(i==JFileChooser.APPROVE_OPTION) {//判断是否打开File file =fc.getSelectedFile();//显示选中内容jt.setText(fc.getSelectedFile().getName());try{FileReader fr =new FileReader(file);BufferedReader in =new BufferedReader (fr);String line= in.readLine();//读取txt文件中的内容s =line.split(" ");//以空格为分隔符,存储人名NewMessage(); //监听事件getjcomboBox();//监听事件}catch(Exception e1) {e1.printStackTrace();} }}});}
4.“关于”按钮监听事件
private void getAboutButton() {AboutButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {jo.showMessageDialog(null, "可建立txt文件:\n写入班级名字然后空格学生名字\n名字和名字之间必须要用空格隔开\n即可识别班级名称和人数以及名单");}});}
5.下拉列表框选择监听事件
private void getjcomboBox() {jc.addItemListener(new ItemListener() {public void itemStateChanged(ItemEvent e) {if(e.getStateChange() == ItemEvent.SELECTED) {String itemSize = (String) e.getItem(); if(itemSize=="抽取一人") {Number =1;}if(itemSize=="抽取三人") {Number =3;}if(itemSize=="抽取五人") {Number =5;}}}});}
6.“开始抽取”按钮监听事件
private void getSrartButton() {StartButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {switch(Number) {case 1:int num1 =(int)1+(int)(Math.random()*(s.length-1-1));jt2.setText(s[num1]);break;case 3:int []num3=new int[100];for(int i=0;i<100;i++) {num3[i]=(int)1+(int)(Math.random()*(s.length-1-1));}for(int i=0;i<98;i++) {if(num3[i]!=num3[i+1] && num3[i]!=num3[i+2] && num3[i+1]!=num3[i+2]) {String strtext1= s[num3[i]]+" "+s[num3[i+1]]+" "+s[num3[i+2]];jt2.setText(strtext1);break;}}break;case 5:int []num5=new int[100];for(int i=0;i<100;i++) {num5[i]=(int)1+(int)(Math.random()*(s.length-1-1));}for(int i=0;i<95;i++) {if(num5[i]!=num5[i+1] && num5[i]!=num5[i+2] && num5[i]!=num5[i+3] && num5[i]!=num5[i+4]&& num5[i+1]!=num5[i+2] && num5[i+1]!=num5[i+3] && num5[i+1]!=num5[i+4]&&num5[i+2]!=num5[i+3] && num5[i+2]!=num5[i+4]&&num5[i+3]!=num5[i+4]) {String strtext1= s[num5[i]]+" "+s[num5[i+1]]+" "+s[num5[i+2]]+" "+s[num5[i+3]]+" "+s[num5[i+4]];jt2.setText(strtext1);break;}}break;}}});}
7.如果成功打开文件并读取,文本框显示内容
private void NewMessage() {ClassjT.setText(s[0]);String s1="";s1=""+(s.length-1);NumjT.setText(s1);jt2.setFont(font);jt2.setForeground(Color.blue);jt2.setText("已就绪,请开始抽取。");}
8.主方法
public static void main(String[] args) {callmy call = new callmy();call.windows();}
9.资源下载
可以去我的资源下载相关源代码
若有错误,欢迎指正批评,欢迎评论;
每文一句:世间之事,有难有意,有成功也会有失败。事情能否成功,不在于事情的难易,而在于你是否付出努力。古往今来,但凡做事懒惰,不思进取之人,想要取得成功,根本就是天方夜谭而勤劳的人,付出艰辛努力,克服重重困难,往往能够取得成功。
如何用java编写一个花名随机抽取器相关推荐
- 如何用java编写一个简单的多人PK游戏
如何用java编写一个简单的多人PK游戏 类与对象---PK游戏的编写 素材取用----王者荣耀和BILIBILI 创建两个对战的角色(PK游戏最少需要两名角色) 创建孙尚香和Van 设置孙尚香和Va ...
- 如何用Java编写一个简单的服务器和客户机
今天我要向大家介绍的是自己编写的一个比较简单的服务器和客户机程序,注意一下哦,比较简单.好了,闲话休提,砸门直入主题. 小编先从客户机和服务器的模型开始讲解.简单来说,我们实现的这种模型呢,我们每一个 ...
- java编写一个函数_请教如何用java编写一个函数图像生成的应用程序?谢谢!
展开全部 package math; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.GridLayo ...
- java 设计连连看_如何用JAVA 编写一个连连看游戏全程设计
展开全部 刚试了..测试通过.. importjavax.swing.*; importjava.awt.*; importjava.awt.event.*; publicclass LianLian ...
- java上机实验作业 编写汽车类car_请问如何用Java编写一个汽车类Car
展开全部 public class Car { private String color;//颜色 private inte69da5e6ba90323131333532363134313032313 ...
- 停车场管理系统 java_使用java编写一个停车场管理系统
使用java编写一个停车场管理系统 发布时间:2020-11-30 16:00:28 来源:亿速云 阅读:145 作者:Leah 这篇文章给大家介绍使用java编写一个停车场管理系统,内容非常详细,感 ...
- java编写一个彩票开奖的模拟程序.游戏共有两种玩法,一种是21选5,即玩家输入5个1到21内的不重复的数。另外一种玩法是6+1玩法,即要求玩家输入7个整数,代表所购买的彩票号码,最后一个是特码。
java编写一个彩票开奖的模拟程序.游戏共有两种玩法,一种是21选5,即玩家输入5个1到21内的不重复的数.另外一种玩法是6+1玩法,即要求玩家输入7个整数,代表所购买的彩票号码,最后一个是特码. 具 ...
- 如何用java开发一个网站?
问题:如何用java开发一个网站? 下载了最新的JDK软件.最新的Eclipse.数据库mysql以及tomcat.struts但是不知道怎么连接起来,在数据库连接的时候mysql-connector ...
- java入门教程:如何用java编写一款王者荣耀游戏?
Java是一种编程语言,被特意设计用于互联网的分布式环境.Java具有类似于C++语言的"形式和感觉",但它要比C++语言更易于使用,而且在编程时彻底采用了一种"以对象为 ...
最新文章
- Angular组件——投影
- php 合并数组 +和array_merge的区别
- 大数据WEB阶段(六)MySql详解(二)
- 哪些名人在学python_盘点计算机界十位顶级人物,看看你认识几个?
- 根据父类id查询所有的父级_父类子类抽象类,super final 重写方法,搞懂继承中复杂的知识点...
- 尚学堂java 参考答案 第八章
- Eclipse+svn+subclipse配置
- 应用回归分析第五版电子书_应用回归分析课后习题参考答案 全部版 何晓群,刘文卿...
- LBP特征算子原理过程
- 使用stm32驱动RC522读取IC卡
- java。用类描述计算机中CPU的速度和硬盘的容量。要求Java应用程序有4个类,名字分别是PC、CPU、HardDisk和Test,其中Test是主类。
- Sloth演示程序及源代码发布
- 肖博数学高考数学快速解题法及秒杀向量问题总结
- 台式计算机品牌怎么查,教你怎么看电脑主板型号和品牌
- html文件如何做成链接,如何将文件做成超链接HTM网页?
- win10中用命令行打开画图
- 期货反向跟单--戏剧性的事实
- 域名证书和SSL证书一样的吗?有什么区别呢
- 二维vector的创建
- MySQL--DQL