JavaFX中 点击按钮调用脚本的同时如何展示进度条的进度

那一抹丶白 发布于 2016/05/11 10:40
阅读 854
收藏 0

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

加载中
0
那一抹丶白
那一抹丶白

增加一个线程 界面就不会卡住 . 将原来执行脚本的方法写入到一个线程中,与进度条线程分开

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();

0
那一抹丶白
那一抹丶白

增加一个线程 界面就不会卡住 . 将原来执行脚本的方法写入到一个线程中,与进度条线程分开

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();

0
yolinfeng
yolinfeng
你在自问自答呢。。。。有没有一种心累的感觉
yolinfeng
yolinfeng
回复 @那一抹丶白 : 我发现css里有%,怎么用这个布局啊
yolinfeng
yolinfeng
回复 @那一抹丶白 : 我刚入坑,现在国内做这个的人好少,资料也少,很多东西都不知道怎么弄,唉
那一抹丶白
那一抹丶白
不是的,开始不会搞,后来慢慢琢磨问人,弄出来了,就在下面自己评论了,留个痕迹,怕下次忘掉 ~
返回顶部
顶部