Java Swing 和观察者模式

标签 java swing oop model-view-controller observer-pattern

我正在寻找一种在 Swing 中干净地组织我的 UI 代码的方法。

假设我的 UI 代码结构如下:

class MainWindow extends JFrame {
    // SomePanel panel is added here
}
class SomePanel extends JPanel {
    // buttons, checkboxes and so on are added here
}

假设我在我的 main 方法中实例化一个 MainWindow 对象:

MainWindow frame = new MainWindow("I am an App");

从我的主方法中监听按钮的 ActionEvents(在 SomePanel 中声明,在 MainWindow 中声明)的最佳实践是什么?

非常感谢您的帮助!

最佳答案

使用 PropertyChangeEvent,参见 herehere , 将结果从一个容器传送到另一个容器。其他实现 observer pattern 的方法提到here .

附录:您建议编写自定义 ActionEvents

EventListenerList是实现观察者模式的另一种方式。这样的列表对于每个 JComponent 都是通用的,当必须管理多个事件 type 时,它是合适的。 JFreeChart是另一个流行的示例,它在数据模型更改时使用不同的事件来更新图表子组件。

关于Java Swing 和观察者模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14343452/

相关文章:

java - 简单的 Android 应用程序 - 在智能手机上运行时出现内存不足错误

java - Swing 组件 setSize()/setBounds() 问题

javascript - 在 typescript 中覆盖继承类中的方法声明

java - 为什么我得到 java.io.EOFException?

java - 当互联网连接不存在时如何检测套接字异常

java - 如何设置滚动到顶部 - JScrollpane中有多个JTextarea的JPanel

Java Swing 变量不递增

java - 在 JPanel 中插入 JLabel 不会将其置于顶部

python - 如何扩展 Django "login"表单?

PHP > 5.4 : overriding constructor with different signature