6

我最近遇到了一个问题,试图在Swing中实现 Model-View-Controller 。

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

相信大家都看到了问题。有什么好的方法可以避免将控制器深入到 GUI 的内部。

我唯一的想法是让控制器成为单例以将其与视图分离,但我听说单例通常是邪恶的。

对此问题的任何建议将不胜感激。

4

1 回答 1

4

与其传入对控制器的引用,不如让控制器监听视图,正如此处所示的间接关联所建议的那样。添加一个,如图所示是理想的。当视图需要调用控制器时,它只需调用.PropertyChangeListenerfirePropertyChange()

一种更方便的方法是为控制器提供一个单独的视图,用于某些操作,例如此处reset()显示的方法。

于 2012-04-21T07:40:28.000 回答