【问题标题】:Update GUI with dependent tasks使用相关任务更新 GUI
【发布时间】:2013-06-12 17:31:33
【问题描述】:

我正在开发一个复杂的多线程应用程序,它与用户和多个服务器进行交互。我想向用户显示一致的状态。假设当属性 A 更改时,属性 B、C、D 变得不一致并需要更新 - 更新可能需要运行一些复杂的算法,这取决于其他属性。但是属性 E 不依赖于 A,所以不需要更新。

我的问题是任何线程都可以随时更改任何属性,当然使用同步的。因此,当线程使用获取的更新数据完成其任务时,这些数据可能已经过时了。在我的应用程序的理论推理中,当不需要其他更新时,可能存在一致的状态 - 我想向用户显示这一点。

在 GUI 多线程应用程序中通常如何管理这些依赖项?目前,我使用的是时间戳,但这不足以解决更复杂的依赖关系。我正在考虑使用 gradle 或 maven,但它似乎有点矫枉过正,而且 GUI 应用程序应该保持快速响应。我有一个解决方案,但稍后可能需要额外的扩展,因此我宁愿使用一些现有的解决方案。

【问题讨论】:

  • 我不确定我是否理解你想要的,但可能你看起来像观察者模式,在 swing-gui 应用程序中看到 PropertyChangeListener

标签: java multithreading swing user-interface dependencies


【解决方案1】:

Java Swing 提供了侦听器,因此作为开发人员的您可以知道动作何时发生,例如按下按钮。

以同样的方式,您的线程可以提供动作侦听器,以便 Swing GUI 可以知道何时更新属性。

您必须编写这些动作侦听器。在 EventListenerList 的 Javadoc 中找到了一个示例

阅读这篇文章,Event Listener,了解另一个编写事件侦听器的示例。

【讨论】:

  • 我在想一些更复杂的东西,但现在看来 EventListeners 应该足够了。谢谢!
猜你喜欢
  • 2014-10-14
  • 1970-01-01
  • 2012-10-03
  • 1970-01-01
  • 1970-01-01
  • 2012-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多