java编写一个花名随机抽取器的实现示例
一.程序效果
二.需要用到的包
importjava.awt.*; importjavax.swing.*; importjava.awt.event.*; importjava.io.*; importjava.util.*;
三.代码
1.相关实例对象,所以对象均为全局对象
privatestaticJLabeljl=newJLabel("文件:");
privatestaticJTextFieldjt=newJTextField();
privatestaticJButtonOpenButton=newJButton("选择文件");
privatestaticJTextFieldjt2=newJTextField();//文本框显示抽取名单
privatestaticJButtonStartButton=newJButton("开始抽取");
privatestaticJLabelClassjL=newJLabel("班级:");
privatestaticJTextFieldClassjT=newJTextField();//显示班级
privatestaticJLabelNumjL=newJLabel("人数:");
privatestaticJTextFieldNumjT=newJTextField();//显示人数
privatestaticJLabeljl2=newJLabel("抽取模式:");
privatestaticJComboBoxjc=newJComboBox();//下拉列表框
privatestaticJButtonAboutButton=newJButton("关于");
privatestaticJOptionPanejo=newJOptionPane();//弹出一个提示框
privatestaticString[]s;//用来存放人名
privatestaticFontfont=newFont("宋体",Font.BOLD,18);//设置字体对象
privatestaticintNumber=0;//用来存放抽取人数
2.建立窗体,并完成组件的初始化
privatevoidwindows(){
JFramejf=newJFrame("花狗抽取器本人博客:fdogcsdn.com");
jf.setIconImage(newImageIcon("Icon.jpg").getImage());
Containerc=jf.getContentPane();
c.setLayout(newGridLayout(4,2,10,10));
OpenButton.setFocusPainted(false);
StartButton.setFocusPainted(false);
AboutButton.setFocusPainted(false);//去掉按钮文字旁边的虚线框
JPaneljp1=newJPanel();
JPaneljp2=newJPanel(newBorderLayout());
JPaneljp3=newJPanel();
JPaneljp4=newJPanel();//添加面板
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.添加“打开文件”按钮监听事件:
privatevoidgetOpenButton(){
OpenButton.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
JFileChooserfc=newJFileChooser();//这个对象就是我们点击打开文件,出来的文件选择器
fc.setCurrentDirectory(newFile("."));//指定当前默认目录
fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);//可以选择只打开文件或者文件夹
fc.setMultiSelectionEnabled(false);//是否允许多选文件
inti=fc.showOpenDialog(getContentPane());
if(i==JFileChooser.APPROVE_OPTION){//判断是否打开
Filefile=fc.getSelectedFile();
//显示选中内容
jt.setText(fc.getSelectedFile().getName());
try{
FileReaderfr=newFileReader(file);
BufferedReaderin=newBufferedReader(fr);
Stringline=in.readLine();//读取txt文件中的内容
s=line.split("");//以空格为分隔符,存储人名
NewMessage();//监听事件
getjcomboBox();//监听事件
}catch(Exceptione1){
e1.printStackTrace();
}
}
}
});
}
4.“关于”按钮监听事件
privatevoidgetAboutButton(){
AboutButton.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
jo.showMessageDialog(null,"可建立txt文件:\n写入班级名字然后空格学生名字\n名字和名字之间必须要用空格隔开\n即可识别班级名称和人数以及名单");
}
});
}
5.下拉列表框选择监听事件
privatevoidgetjcomboBox(){
jc.addItemListener(newItemListener(){
publicvoiditemStateChanged(ItemEvente){
if(e.getStateChange()==ItemEvent.SELECTED){
StringitemSize=(String)e.getItem();
if(itemSize=="抽取一人"){
Number=1;
}
if(itemSize=="抽取三人"){
Number=3;
}
if(itemSize=="抽取五人"){
Number=5;
}
}
}
});
}
6.“开始抽取”按钮监听事件
privatevoidgetSrartButton(){
StartButton.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
switch(Number){
case1:
intnum1=(int)1+(int)(Math.random()*(s.length-1-1));
jt2.setText(s[num1]);
break;
case3:
int[]num3=newint[100];
for(inti=0;i<100;i++){
num3[i]=(int)1+(int)(Math.random()*(s.length-1-1));
}
for(inti=0;i<98;i++){
if(num3[i]!=num3[i+1]&&num3[i]!=num3[i+2]&&num3[i+1]!=num3[i+2]){
Stringstrtext1=s[num3[i]]+""+s[num3[i+1]]+""+s[num3[i+2]];
jt2.setText(strtext1);
break;
}
}
break;
case5:
int[]num5=newint[100];
for(inti=0;i<100;i++){
num5[i]=(int)1+(int)(Math.random()*(s.length-1-1));
}
for(inti=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]){
Stringstrtext1=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.如果成功打开文件并读取,文本框显示内容
privatevoidNewMessage(){
ClassjT.setText(s[0]);
Strings1="";
s1=""+(s.length-1);
NumjT.setText(s1);
jt2.setFont(font);
jt2.setForeground(Color.blue);
jt2.setText("已就绪,请开始抽取。");
}
8.主方法
publicstaticvoidmain(String[]args){
callmycall=newcallmy();
call.windows();
}
9.资源下载
相关源代码
到此这篇关于java编写一个花名随机抽取器的实现示例的文章就介绍到这了,更多相关java花名随机抽取器内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。