1

发生某些特定外部事件后,如何关闭 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;                
                }
            };

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

4

1 回答 1

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 在对问题的评论中提供了关于阶段结束问题的链接。

于 2013-04-24T20:26:39.193 回答