Java Swing和观察者模式

Mac*_*cks 2 java oop model-view-controller swing 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
}
Run Code Online (Sandbox Code Playgroud)

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

MainWindow frame = new MainWindow("I am an App");
Run Code Online (Sandbox Code Playgroud)

在main-method中监听按钮的ActionEvents(在SomePanel中声明,在MainWindow中声明)的最佳做法是什么?

非常感谢您的帮助!

tra*_*god 5

使用a PropertyChangeEvent,在此处此处看到,将结果从一个容器传递到另一个容器.这里提到实现观察者模式的其他方法.

附录:你建议写自定义ActionEvents

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