2013-06-05 36 views
1

enter image description here一個JFrame和50個JPanel或者只有50個JFrame單獨或其他選擇?

這是我的程序的圖片。所有這些JMenuItem都在一個JFrame中,我爲它們中的每一個添加了JPanel。當用戶點擊一個JMenuItem時,所有JPanel將不可見,只有相應的JPanel可以工作。

這是一個好方法嗎?我的課很龐大。在添加功能之前是5000行。

+2

一個大的圖形用戶界面將是幾行,但你有他們所有在一個類?下週你甚至不會理解它是如何工作的! – arynaq

+0

@arynaq什麼是替代。當用戶點擊JMenuItem時看不見這個框架,並激活另一個,當用戶關閉另一個時,我激活這個框架? – Bernard

+1

我會推薦通過[CardLayout](http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html)步行,這完全適合您的應用場景。 –

回答

5

因爲你似乎有相當數量的JPanels,所以我認爲將它們轉換爲JFrames並不是一個好主意,因爲這會混亂用戶的dektop(誰想要運行一個應用程序並且突然間發現他們的桌面充滿了6個或更多的新窗口?)。

因此,「JPanel」的選擇似乎合乎邏輯。

如果您想讓用戶選擇自定義排列這些面板(例如重疊,並排等),那麼JDesktopPane可能是一個不錯的解決方案。
(此外,看一看的Java Tutorials的相關章節。)


不直接關係到你的問題,但有如此巨大的類(5000線無功能......)不考慮一個良好的編碼習慣(如果不是由於主要原因,其他任何事情)。
從Oraclre的Code Conventions for the Java Programming Language,部分3 - File Organization

文件超過2000線繁瑣,應儘量避免。

因此,嘗試將它分解成更小,更可重用和可保存的代碼/類片段可能是個好主意。

+0

感謝您的回覆,當您有像這樣的用戶點擊每個JMenuItam並且有功能的程序時。你會怎麼做?一個Janel中的每個JPanel或分離JPanel類並將它們添加到JFrame中。我怎樣才能做到這一點? – Bernard

+0

如果您詢問每個JPanel的**代碼**是否應與主JFrame類位於同一個類/文件中,則答案肯定爲否。 (如果你問別的東西,那麼我誤解你:)) – gkalpak

+0

是的,你是對的,如果你說沒有什麼是替代方案? – Bernard