0

第一篇文章不要伤害我:)

我正在使用BorderLayout通常的北、西、中、南面板。在西部 ContentPanel,我有一个Tree. 如果发生事件 ( ),我希望在CenterOnClick上显示一个特定的对话框。 ContentPanel

对我来说最好的方法是什么?目前我正在使用一个名为returnPanel()返回中心的函数ContentPanel。在事件处理程序中,我调用了这个函数(MainWindow.returnPanel().add(myDialog))

4

1 回答 1

1

你这样做的方式是直观且有效的,但是当应用程序增长时会开始导致地狱,因为应用程序的不同部分是强耦合的。这个问题的解决方案是MVC 设计模式观察者设计模式

理想情况下,使用 MVC 模式,您不希望任何小部件“知道”任何其他小部件。只有一个类知道所有的小部件,即控制器。每当一个小部件需要向另一个小部件发送消息/信号时,它都会将其告知控制器类,后者以适当的方式将消息中继到适当的小部件。通过这种方式,两个小部件被分离,一个可以在不破坏另一个的情况下进行更改。您可能希望使用枚举来枚举控制器必须响应的所有可能操作。

如果您的小部件必须在事件发生时仅调用控制器,您可以简单地在其上调用一个恰当命名的(静态)方法并完成它。但是,一旦需要通知多个其他类一个事件,您最好使用观察者模式,它允许您向多个其他类发出信号,而无需更改您的类。它只是在 eventHandler 中调用 notifyPObservers() 就可以了。有多少听众,他们是什么类型,无关紧要。这样,您还可以将一个类与其侦听器分离。即使只有控制器监听,使用该模式也是可取的,因为它清楚地将“回调”代码与类中的其他代码分开。

顺便说一句,这与 GWT 甚至 Java 无关。

于 2008-09-21T19:52:57.653 回答