特定事件后的结束阶段

时间:2013-04-24 20:02:20

标签: user-interface javafx-2

如何在发生某些特定外部事件后关闭JavaFX 2中的某个阶段?假设我有一个简单的进度条的阶段,由任务填充(从另一个答案中借用):

Task<Void> task = new Task<Void>(){
                @Override
                public Void call(){
                    for (int i = 1; i < 10; i++)    {
                        try {
                            Thread.sleep(200);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        System.out.println(i);
                        updateProgress(i, 10);
                    }
                return null;                
                }
            };

在完成任务并将ProgressBar填充到100%后,如何自动关闭窗口(并打开下一个窗口)?

1 个答案:

答案 0 :(得分:3)

返回null之前;你可以添加

Platform.runLater(
    new Runnable() {
        public void run() {
            stage.close();
        }
    }
);

progressBar.progressProperty().addListener(new ChangeListener<Number>(){
//add checking, that progress is >= 1.0 - epsilon
//and call stage.close();
})

第一个更好。但请注意,该任务是在一个单独的线程上完成的。所以你应该使用特殊调用在JFX线程上对stage.close()发出请求。

此外,jewelsea提供关于阶段结束问题的链接以评论该问题。

相关问题