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

发布于 2021-11-27 18:55:12 字数 2127 浏览 779 评论 6

在做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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

瀞厅☆埖开 2021-12-01 15:31:52

不是的,开始不会搞,后来慢慢琢磨问人,弄出来了,就在下面自己评论了,留个痕迹,怕下次忘掉 ~

岁月打碎记忆 2021-12-01 15:31:12

回复
我刚入坑,现在国内做这个的人好少,资料也少,很多东西都不知道怎么弄,唉

如日中天 2021-12-01 15:29:07

回复
我发现css里有%,怎么用这个布局啊

瀞厅☆埖开 2021-12-01 15:24:30

你在自问自答呢。。。。有没有一种心累的感觉

后知后觉 2021-12-01 15:19:46

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

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

叹沉浮 2021-11-30 21:07:59

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文