ayt ..我有点担心,我的问题是是Platform.runlater()回到UI线程的唯一方法还是有其他选择..
- 例如 -
new Thread(new Runnable() {
@Override
public void run() {
// i do something slick here
Platform.runLater(new Runnable() { // is this the only way??
@Override
public void run() {
// TODO Auto-generated method stub
TextField txt =new TextField(" internal server error -Re-try");
root.getChildren().add(txt);
}
});
}
}).start();;
我想知道是否还有其他方法......谢谢...
答案 0 :(得分:1)
据我所知,没有其他办法。但你可以通过绑定做一些有限的事情来有效地从另一个线程更改UI而不调用PlatForm.runLater()
示例:
Task task = new Task<Void>() {
@Override public Void run() {
for (int i=0; i<100; i++) {
updateProgress(i, 100);
}
return null;
}
};
然后在你的GUI中有一个progressBar说:
ProgressBar bar = new ProgressBar();
bar.progressProperty().bind(task.progressProperty());
new Thread(task).start();
bar.progressProperty().bind(task.progressProperty());