抽签软件

基于javafx制作的随机抽签软件

最近刚学习英语课的时候刚看见英语老师用复古界面的抽签软件(用C语言写的)点名让同学回答问题,UI界面美观值真的是让人汗颜- -,在网上好像也搜不到用javafx做的抽签软件,swing写的倒是挺多的,觉得好玩自己便做了一个类似的抽签软件,希望对javafx感兴趣的新手有点帮助。

软件下载地址

网盘:https://pan.baidu.com/s/1W0_KgdJXId2__gth16UzEQ

jar包(源码):链接:https://pan.baidu.com/s/1tvscoLZkO4X7VQu4G5QD1g 提取码:99s5

使用的知识

软件所使用的知识点其实是大多都是UI组件和属性绑定 ,时间相应,监听 ,ArrayList 容器,Iterator迭代器等都是基础的东西,不涉及ODBC数据库和服务器,代码量在1300行左右。Timeline 用来实现名字随机动画的设置 播放

动画的定义和绑定

`eventhandlercolors = e4->{

tf.setFill(Color.color((int)Math.random()*255,(int)Math.random()*255,(int)Math.random()*255));

};

Timeline colorPlay = new Timeline(new KeyFrame(Duration.millis(300),colors));

colorPlay.setCycleCount(Timeline.INDEFINITE);`.

配置文件 (如果没有,则自己创建 ,Eclipse项目中 "save_Data.properties"表示文件在project工程目录下,"src\priv\Xiaoc\class\save_Data.properties"则在.class目录下)

//保存用户配置

public static String save(String URL,ArrayList waitInsertData,ArrayList waitInsertDataValue) {

String ERROR_details ="保存成功!!";

URL = "save.properties";

Properties saveFile = new Properties();

try {

Fileoutputstream cin = new FileOutputStream(URL);

for(int i = 0;i

saveFile.setProperty(waitInsertData.get(i).toString(),waitInsertDataValue.get(i).toString()); //save relative Value

}

try {

saveFile.store(cin, null);

} catch (IOException e) {

error_details = "读写成功,保存失败";

}

try {

cin.close();

} catch (IOException e) {

error_details = "读写成功,保存成功 但关闭失败";

}

} catch (filenotfoundException e) {

error_details = "文件读写失败";

}

return error_details;

}

}

//加载用户配置 返回的是名字 和值(键值)的动态字符串数组

public static ArrayList[] load(String URL){

Properties loadFile = new Properties();

Iterator it,value0;

ArrayList names[] = new ArrayList[2];

for(int y=0;y<2;y++) {

names[y] = new ArrayList();

}

try {

fileinputstream fis = new FileInputStream(URL);

BufferedInputStream bfis = new BufferedInputStream(fis);

InputStream is = bfis;

try {

loadFile.load(is);

it = loadFile.stringPropertyNames().iterator();

value0= loadFile.stringPropertyNames().iterator();

while(it.hasNext()) { //Get name

names[0].add(it.next());

}

while(value0.hasNext()) { // Get Key Value

names[1].add(loadFile.getProperty(value0.next()));

}

is.close();

bfis.close();

fis.close();

return names;

} catch (IOException e) {

//System.out.println("加载失败");

return null;

}

} catch (FileNotFoundException e) {

//System.out.println("打开文件失败");

}

return null;

}

读取文件所用到的输入流 输出流 I/O流

//URLFile 是ChooseFile文件选择框选择的文件 ,code是读取的时候的编码 ,默认是UTF-8,我的设置成GBK才不会乱码。。

public ArrayList getFileDetails(File URLFile) { // to get student name;

ArrayList temp = new ArrayList();

FileInputStream cin;

try {

inputstreamreader fr = new InputStreamReader(new FileInputStream(URLFile),code);

BufferedReader bf = new BufferedReader(fr);

String s= null;

while((s = bf.readLine())!=null) {

temp.add(s); //读取每一行学生的名字

}

bf.close();

fr.close();

}catch(Exception e) {};

return temp; //返回所有学生的名字

}

颜色选择器中的颜色十六进制值转RBG

//colorSelect 是颜色选择器实体化的对象

color_name_r = colorselect.getValue().getRed()*255;//R

color_name_g = colorselect.getValue().getGreen()*255; //G

color_name_b = colorselect.getValue().getBlue()*255; //B

color_name = "rgb("+color_name_r+","+color_name_g+","+color_name_b+");";

mainPane.setStyle("-fx-background-color:"+color_name);//css设置面板背景颜色

多线程(默认是Javafx-APPlication Thread,如果这时我们要去干其他事情,那么原来的UI界面就会停止响应,界面就会奔溃,直到新任务Task完成才会回到原来的界面,这时我们就应该新建线程,这样就不会阻塞,并发性)

// we start new Thread

Thread ui = new Thread() {

public void run() {

ani2.play();

try {

for(int i = 0;i

this.currentThread().sleep(30);

show.appendText(stu.get(i).toString()+"\n");//一行一行的在文本域中添加学生名字,这样就看起来比较舒畅,而不是一打开文件就直接给你加载完毕,感觉有点快

}

}catch(Exception e) {

tip_m2.settext(e.getmessage());}

} //run

};

ui.start();//新开的线程运行

事件响应,比如Button,Check 等组件的响应

clear.setOnAction(e->{ //清空文本按钮 点击时的处理事件

if(end.getText().length() == 0) {

dosclick.play();

tip_m.setText("已经空啦");

}

else

end.setText("");

});

事件的监听,当要求输入值得时候,我们往往会给TextFiled文本输入框添加监听事件,例如我们让用户在输入框只能输入数字,数字以外的符号包括字母不准输入,否则一旦输入则立即出现alert之类的错误提示。

//cinextract 是TextFiled的具体化的实例化对象

cinExtract.textProperty().addListener((observation,oldValueLast,newValueNow)->{

try {

if(cinExtract.getText().length()>0)

for(int i = 0;i

if(cinExtract.getText().toString().charAt(i)

cinExtract.getText().toString().charAt(i)>'9') {

tip_m.setText("只能输入数字哦");

cinExtract.setText("");

}

}

else {

cinExtract.setText("1");

}

if(cinExtract.getText().length()>0) //当学生人数为30人 ,但我们输入了35人,这时cinExtract就会取最大值30,自动改变

if(integer.parseInt(cinExtract.getText())>stu.size()) {

tip_m.setText("错误 输入数据大于所具有的人数");

cinExtract.setText(string.format("%d",stu.size()));//排版 SDF

}

}catch(Exception error) {

tip.setcontentText("输入有错误啦 请重新输入吧#_#");

tip.showAndWait();

};

});

关于Button数组问题

如果一个软件需要用到很多很多按钮,那么设置个Button数组统一对他们操作会比较好点。比如

//一个个

Button select = new Button("select");

Button reselect = new Button("extract");

Button clear = new Button("清空");

Button recover = new Button("recover");

Button color = new Button("color");

Button cancel =new Button("pause");

Button modify_code = new Button("code");

Button colorPicker_b = new Button("colorPickerSelect");

//数组

Button mainPane_button[] = new Button[8];

for(int i = 0;i<8;i++){

if(i == 0)

mainPane_button[i] = new Button(name);

else

mainPane_button[i] = new Button(otherName);

}

软件使用exe4j打包,因为用的是开源免费软件,所以打包好的软件在电脑上运行需要有JRE环境,不然将会打不开软件。

相关阅读

##0x00 背景知识ASLR(Address Space Layout Randomization)在2005年被引入到Linux的内核 kernel 2.6.12 中,当然早在2004年就以pat

网上关于12306图片验证码的吐槽已经是铺天盖地,当然,现在的12306图片验证码已经不像以前那么变态了。不过鹏哥心里一直有个心结,纵使

在SEO的道路上,白帽SEO人员是孤独的,理由很简单:它需要你在SEO的道路上不断的实践与测试,没有一套完美的普世之路,除非你是深度研究搜

真正意义上的随机数,随机数列是源于随机实验的结果,均匀分布且生成不能重现。例如,使用离子辐射事件的脉冲检测器气体放电管和带泄露

在C语言中,ANSIC C程序库提供rand()函数来产生随机数。但事实上,rand()是并不是一个真正的随机数产生器,即可以预测随机序列的顺序,在

抽签 java_「抽签软件」基于Javafx制作的随机抽签软件 - seo实验室相关推荐

  1. arraylist java 排序_「arraylist排序」java ArrayList的两种排序方法 - seo实验室

    arraylist排序 1.ArrayList使用排序的初衷 我们知道ArrayList的好处是可以不用限定容器的大小,他会根据元素的增加自己扩大.但是存储进去的数据类型都会变成object,虽然每个 ...

  2. php自定义框架,「php 框架」自定义php框架(篇一) - seo实验室

    php 框架 老是用别人的东西,虽然一时爽,但想做深度开发,哪有自己的东西用起来方便?那我们就自己弄一个php小框架,知根知底,想怎么改就怎么改,岂不爽哉? 如图,mvc即框架名,旗下包含7个文件夹, ...

  3. python画指数函数图像_「指数函数图像」python画出e指数函数的图像 - seo实验室...

    指数函数图像 这里用Python逼近函数y = exp(x);同样使用泰勒函数去逼近: exp(x) = 1 + x + (x)^2/(2!) + .. + (x)^n/(n!) + ...#!/us ...

  4. python数字转英文_「年月日英文」python英文日期转数字年月日格式 - seo实验室

    年月日英文 import time import datetime time='Friday, November 18, 2016' time_format=datetime.datetime.str ...

  5. jquery对textarea写入_「textarea赋值」JQuery给textarea取值和赋值 - seo实验室

    textarea赋值 JQuery给textarea取值和赋值 取值 var qrcodefortemcontent=$("#qrcodefortemcontent").val() ...

  6. c语言开发五轴后处理,「数控干货」基于UG CLS文件使用 C 语言制作智能后处理工具...

    原标题:「数控干货」基于UG CLS文件使用 C 语言制作智能后处理工具 1 前言 UG 后处理操作是 UGCAM 数控加工工作中一个重要环节,主要任务是把在 UG 加工环境下生成的加工刀位文件转换成 ...

  7. 「免费申请」基于Arm Cortex-M4的兆易创新GD32F427高性能开发板试用活动

    申请链接:「免费申请」基于Arm Cortex-M4的兆易创新GD32F427高性能开发板试用活动 基于Arm® Cortex®-M4的兆易创新GD32F427开发板免费试用活动 近期兆易创新发布了全 ...

  8. 13 「装修阶段」- 基于路由的按需渲染

    导读 本节标题:「装修阶段」- 基于路由的按需渲染 本节主旨:页面渲染性能优化,实现基于路由的拆分,按需渲染,需要特别注意双端路由如何处理 本节配套代码: https://github.com/Big ...

  9. 模拟QQ软件的基于多线程的流媒体加密传输软件技术

    模拟QQ软件的基于多线程的流媒体加密传输软件技术 模拟QQ软件,基于多线程编程捕捉摄像头及麦克风实时数据,基于socket通信设计发送端.接收端两个部分的,对音频和视频进行采集.加密或加水印.传输.解 ...

  10. android外卖软件开发,基于Android平台的外卖配送软件的设计与实现

    摘要: 随着外卖产业的不断发展,订购外卖已经成为了人们每日的需求.相比于传统的快递服务业,外卖配送有着极高的时效性要求,食物必须保证在极短的时间内送达到客户手中,不然会影响食物的口感和客户的订餐体验. ...

最新文章

  1. AI需求强劲 AI芯片市场规模有望达到405亿
  2. 在Spring MVC中使用注解的方式校验RequestParams
  3. python输出重定向到窗口_[python]重定向输出
  4. 别小看这不起眼的电阻,里面有很多学问!
  5. 第四章 大网高级   NSSA
  6. windowswps怎么以文件形式发送_手机WPS怎么以文件形式发送
  7. 基于JAVAEE公共自行车租赁系统
  8. Android音视频——Libyuv使用实战
  9. BAPI_EXCHANGERATE_GETDETAIL 取汇率
  10. 项目结构优化设计之smv架构
  11. amigo3.1 android版本,金立F103B GN3003官方原厂固件rom系统刷机包升级包3.1.15
  12. 抖音带货赚钱吗?有哪些技巧?
  13. linux net子系统-系统调用层
  14. 那些让面试官直呼内行的Java知识点(二)
  15. vue——数字加逗号分隔
  16. 【git系列005】git分支学习
  17. 烟花易冷,一指繁华了无痕:伤感QQ空间日志
  18. 手机、彩电巨头跨界互博
  19. Apple Watch Ultra 省电配置
  20. Proxifier注册码序列号

热门文章

  1. IDEA报错:Error:java: JDK isn‘t specified for module ‘work-flow‘
  2. 有10亿个整数,要求选取重复次数最多的100个整数
  3. 计算机专业期末总结200字,学期末自我总结200字
  4. 慧荣SM2263XT量产开卡成功,附SM2263XT量产工具、开卡软件(一个512G固态硬盘不认盘修复教程)
  5. 113.库存明细账案例(包含结存数)
  6. 程序员编程中遇到的那些灵异事件,胆小误入!
  7. 小黄鸡 java_用java实现Simsimi小黄鸡接口
  8. 12123 上传照片到文件服务器失败,“交管12123”APP上传证件照片老是出错?教你正确上传姿势……...
  9. docker 内安装字体
  10. 根据广播星历计算GNSS卫星在瞬时地球坐标系中的坐标