在做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;
}
};
}