如何在发生某些特定外部事件后关闭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%后,如何自动关闭窗口(并打开下一个窗口)?
答案 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提供关于阶段结束问题的链接以评论该问题。