2011-12-27 130 views
1

我在制作Java Swing GUI应用程序。我有2个课程导致了我的问题。我已经创建了一个菜单栏类来处理正常的菜单栏选择:2类依赖关系?

File -> Exit 
Edit -> Cut, Copy , Paste 
Tools -> Options 
Help -> About 

最后一类是一个选项类。目前只是通过JComboBox将JFrame更新为您想要的外观和感觉。 MercuryFrame只是我用于UI的默认JFrame。

目前的代码是

OptionWindow option = new OptionWindow(mercuryFrame , notesWindow); 
MercuryMenuBar menuBar = new MercuryMenuBar(mercuryFrame , option); 

现在我遇到的问题是我希望我们的MenuBar类有一个JFrame显示关于被点击时。这表明可以说当前版本。现在在这个设置中,optionWindow不会更新关于JFrame。现在我可以通过在调用optionWindow函数时传递值来解决此问题。

openOptionWindow(menuBarJFrame); 

,或者使用setter方法

option.setHelpFrame(JFrame); 

最后,我考虑的另一个选项是使得关于它自己的类,只是它传递给两个人的类声明之后。

AboutWindow about = new AboutWindow(); 
OptionWindow option = new OptionWindow(mercuryFrame , notesWindow , about); 
MercuryMenuBar menuBar = new MercuryMenuBar(mercuryFrame , option , about); 

这些方法中的任何一种都是正确的方法吗?或者这是我设计它的问题?

感谢您的任何帮助。

UPDATE

我就用第三种方法。

AboutWindow about = new AboutWindow(); 
OptionWindow option = new OptionWindow(mercuryFrame , notesWindow , about); 
MercuryMenuBar menuBar = new MercuryMenuBar(mercuryFrame , option , about); 

但是我很想听听你是否认为这是正确的。

回答

0

我用第三种方法去了。

AboutWindow about = new AboutWindow(); 
OptionWindow option = new OptionWindow(mercuryFrame , notesWindow , about); 
MercuryMenuBar menuBar = new MercuryMenuBar(mercuryFrame , option , about);