Java fx在UI替代品上运行

时间:2014-11-24 20:31:28

标签: javafx javafx-2 javafx-8

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

我想知道是否还有其他方法......谢谢...

1 个答案:

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