JavaFX中 点击按钮调用脚本的同时如何展示进度条的进度
在做javafx的一个项目,有一个功能是 点击处理按钮,会调用脚本去执行一些操作 ,
现在为了程序在执行操作的时候给用户更好的体验,需要加一个进度条来显示执行的进度
(假设60秒内执行完成)
我现在遇到的问题是,执行脚本的时候 界面就卡住了,进度条无法显示进度,可能是线程的问题,
谁有办法解决的?谢谢~
代码片段:
btn02.setOnAction( e->{
//Windows系统下启动应用程序(计算器)
executeCmd("xxxxxxxxx 省略");
//进度条任务
Task task = createTask();
bar.progressProperty().bind(task.progressProperty());
Thread thread = new Thread(task);
thread.setDaemon(true);
thread.start();
}
//创建任务
private Task createTask(){
return new Task<Void>(){
@Override protected Void call() throws Exception {
for(int iterations = 0; iterations < 100; iterations++){
if(isCancelled()) break;
TimeUnit.SECONDS.sleep(1);
//60秒内进度条到100%
updateProgress(iterations,60);
}
return null;
}
};
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
不是的,开始不会搞,后来慢慢琢磨问人,弄出来了,就在下面自己评论了,留个痕迹,怕下次忘掉 ~
回复
我刚入坑,现在国内做这个的人好少,资料也少,很多东西都不知道怎么弄,唉
回复
我发现css里有%,怎么用这个布局啊
你在自问自答呢。。。。有没有一种心累的感觉
增加一个线程 界面就不会卡住 . 将原来执行脚本的方法写入到一个线程中,与进度条线程分开
Thread t1 = new Thread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
try {
executeCmd("start %windir%\system32\calc.exe");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
t1.setName("execute_script_thread");
t1.start();
增加一个线程 界面就不会卡住 . 将原来执行脚本的方法写入到一个线程中,与进度条线程分开
Thread t1 = new Thread(new Runnable(){
@Override
public void run() {
try {
executeCmd("start %windir%\system32\calc.exe");
} catch (IOException e) {
e.printStackTrace();
}
}
});
t1.setName("execute_script_thread");
t1.start();