一個JFrame和50個JPanel或者只有50個JFrame單獨或其他選擇?
這是我的程序的圖片。所有這些JMenuItem都在一個JFrame中,我爲它們中的每一個添加了JPanel。當用戶點擊一個JMenuItem時,所有JPanel將不可見,只有相應的JPanel可以工作。
這是一個好方法嗎?我的課很龐大。在添加功能之前是5000行。
一個JFrame和50個JPanel或者只有50個JFrame單獨或其他選擇?
這是我的程序的圖片。所有這些JMenuItem都在一個JFrame中,我爲它們中的每一個添加了JPanel。當用戶點擊一個JMenuItem時,所有JPanel將不可見,只有相應的JPanel可以工作。
這是一個好方法嗎?我的課很龐大。在添加功能之前是5000行。
因爲你似乎有相當數量的JPanels,所以我認爲將它們轉換爲JFrames並不是一個好主意,因爲這會混亂用戶的dektop(誰想要運行一個應用程序並且突然間發現他們的桌面充滿了6個或更多的新窗口?)。
因此,「JPanel」的選擇似乎合乎邏輯。
如果您想讓用戶選擇自定義排列這些面板(例如重疊,並排等),那麼JDesktopPane可能是一個不錯的解決方案。
(此外,看一看的Java Tutorials的相關章節。)
不直接關係到你的問題,但有如此巨大的類(5000線無功能......)不考慮一個良好的編碼習慣(如果不是由於主要原因,其他任何事情)。
從Oraclre的Code Conventions for the Java Programming Language,部分3 - File Organization:
文件超過2000線繁瑣,應儘量避免。
因此,嘗試將它分解成更小,更可重用和可保存的代碼/類片段可能是個好主意。
一個大的圖形用戶界面將是幾行,但你有他們所有在一個類?下週你甚至不會理解它是如何工作的! – arynaq
@arynaq什麼是替代。當用戶點擊JMenuItem時看不見這個框架,並激活另一個,當用戶關閉另一個時,我激活這個框架? – Bernard
我會推薦通過[CardLayout](http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html)步行,這完全適合您的應用場景。 –