2011-12-27 355 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);