我正在开发一个 swing 应用程序,它调用多个方法并初始化不同的类。 我还有多个线程来处理中间结果。我的要求是在一些标签和文本框中动态显示中间数据。
请帮助我了解以下哪种方法在内存和性能方面最好。
- 我可以为所有标签和文本框设置设置方法。这样我就可以使用 swing 类对象调用这些方法,但在这种情况下,我需要将 swing 类对象传递给每个我想要将数据设置为标签的类。
- 另一种方法是我可以创建 swing 类的公共(public)静态对象,并且每当需要设置标签文本时我都会从任何类中调用它。
第一种方法会产生更多开销,因为我需要将 Swing 类对象传递给其他类。
第二种方法是最简单的方法,但创建静态对象可能会造成困惑,因为该应用程序包含线程。
我只是想知道该选择哪一个以及为什么?
否则,如果有人从事过一些复杂的 Swing 应用程序开发 - 您是如何解决此类问题的?
最佳答案
这个example是多线程上下文中第一种方法的典型方法。为了方便起见,模型和 View 紧密耦合:每个工作线程都会收到对其应更新的标签的引用。另一种选择是松耦合:每个 View 注册以监听模型,该模型使用 observer pattern 通知所有注册的监听器。 .
这个更简单example使用两种方法:
紧密耦合:工作器在封闭范围内获取对其目标标签的引用。
松散耦合:封闭 View 注册一个
PropertyChangeListener
,模型使用它通过setProgress()
向 View 发出信号。
您需要决定哪一个对您的申请来说是重要的。我同意 @JB Nizet 对第二种方法的评论。
关于java - 从外部类处理 JFrame 组件的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11384107/