如何避免在Swing中耦合View和Controller

时间:2012-04-21 06:56:22

标签: java swing model-view-controller actionlistener propertychangelistener

我最近遇到了一个问题,试图在 Swing 中实现模型 - 视图 - 控制器。

我有一个由子面板组成的GUI类,这些子面板由其他子面板组成。现在,在其中一个子子面板中有一个JButton。在这个ActionListener的{​​{1}}中,我想在控制器中调用一个方法。为了做到这一点,我需要将控制器深入GUI的内部传递到JButton所在的子子面板。然后在此子子面板中,我需要将JButton附加到ActionListener并通过调用我想在控制器中调用的方法填写JButton

我相信你们都看到了这个问题。是否有任何好方法可以避免将控制器深入到GUI的内部。

我唯一的想法是让控制器成为一个单身人士将它从视图中分离出来,但我听说单身人士通常是邪恶的。

对此事的任何建议都将非常感激。

1 个答案:

答案 0 :(得分:4)

不要传入对控制器的引用,而是按照间接关联图示here的建议,让控制器监听到视图。添加PropertyChangeListener,图示为here,对此非常理想。当视图需要调用控制器时,它只调用firePropertyChange()

更方便的方法是为控制器提供某些操作的单独视图,例如显示herereset()方法。