JavaFx对SwingUtilities.invokeLater的响应

Mar*_*sen 10 java swing javafx mixing event-dispatch-thread

所以我知道JavaFx在使用线程时更新GUI的方法称为Task,但代码的工作方式是否相似或存在差异.让我举个例子:

GUI之外的另一个类作为线程运行

public void run(){
    while (socket.isConnected()) {
        String x = input.next();
        System.out.println(x);
        mg.updateChat(x)
    }
}
Run Code Online (Sandbox Code Playgroud)

在实际的GUI里面

public void updateChat(final String input){
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            txtChat.setText(input); 
        }
    }); 
}
Run Code Online (Sandbox Code Playgroud)

任务的工作方式是否完全相同?或者是否存在差异,是否有如何修改此代码以在JavaFx项目中工作?

amr*_*mru 17

你在寻找JavaFX中的SwingUtil.invokeLater对应物吗?如果是,它是:

Platform.runLater(java.lang.Runnable runnable)
Run Code Online (Sandbox Code Playgroud)

  • lambda版本很不错Platform.runLater(() - > txtChat.setText(input)) (3认同)