当前位置: 首页 > 面试题库 >

JavaFx对SwingUtilities.invokeLater的响应

东门阳飇
2023-03-14
问题内容

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

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

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

在实际的GUI中

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

Task是否以完全相同的方式工作?还是存在差异?如果存在差异,您将如何修改此代码以在JavaFx项目中工作?


问题答案:

您是否正在寻找JavaFX中的SwingUtil.invokeLater副本。如果是,则为:

Platform.runLater(java.lang.Runnable runnable)


 类似资料:
  • 问题内容: 我的问题与。我什么时候应该使用它?每次需要更新GUI组件时都需要使用吗?它到底是做什么的?因为它听起来不直观并且添加了看似不必要的代码,所以有替代方法吗? 问题答案: 每次需要更新GUI组件时都需要使用吗? 不,如果您已经在事件分配线程(EDT)上,则不是这样,当响应用户发起的事件(例如单击和选择)时,情况总是如此。(actionPerformed方法等始终由EDT调用。) 但是,如果

  • 问题内容: Javascript中有与Java 方法等效的方法吗? 更新1 那么,零延迟会和完全一样吗? 问题答案: 如果要异步运行某些内容( 稍后 ),请尝试 JavaScript是单线程的。如果要在事件处理程序之外运行一些耗时(CPU密集型)的任务,则可以使用上面的技术来执行此操作,但是它仍然会占用事件处理线程(导致UI冻结)。 在浏览器中运行CPU密集型任务通常是一个坏主意(网络工作者可能会

  • 问题内容: 我已经看过数百遍这小段代码了: 现在我的问题是:怎么办?如果我仅在主线程中创建并显示GUI,将会发生什么样的坏事情? 问题答案: 如果在遵循指南的前提下从EDT更新它,则不会发生任何不良情况。 那是… 如果从事件分配线程(例如,从JButton的ActionListener)调用invokeLater,则doRun.run()仍将延迟,直到处理完所有未决事件。 资源 如果不是这种情况,

  • 问题内容: 之间有什么区别? 和: 哪种方法更好用? 问题答案: 接受一个Runnable并在以后的ui线程中调用它。通常用于短期运行ui相关工作。 在非ui线程-工作线程中运行主要工作。完成长时间的工作后,将在ui线程(事件调度线程)中调用该方法。 但是,SwingWorker的方法也可以通过调用该方法来发布中间结果。这将确保要发布的结果由事件调度线程处理。您可以通过实现该方法进行连接。

  • 问题内容: 为什么需要放入GUI更新代码? 为什么Swing本身无法在内部对其进行处理?为什么调用者必须关心swing如何处理UI更新? 问题答案: 摆动对象不是线程安全的。顾名思义,允许在以后的某个时间执行任务;但更重要的是,该任务将在AWT事件分配线程上执行。使用时r,任务是异步执行的;还有,直到任务完成执行后才会返回。

  • 我正在用JavaFX和场景构建器编程一个音乐播放器。我的问题是,如果我调整我的程序的窗口大小,UI不会随之增长。如何使UI具有响应性? 在我加了SplashScreen之前,它工作得很好。从那时起,我试图让它工作,但我不能找到任何解决方案在网上! 请帮帮我,提前谢谢! FXML: 飞溅FXML: