2015-05-01 51 views
0

我有一個項目,它創建幾個JFrames並將它們顯示爲單獨的窗口。這可能相當混亂,所以我想在父窗口中收集所有這些框架。我知道JInternalFrame的概念,原則上肯定會工作,但項目是相當大的,而JFrames相當複雜,所以將它們單獨轉換爲JInternalFrame似乎對我來說或多或少是不可行的(特別是由於JInternalFrame在諸如鼠標事件等某些方面表現稍微不同)。JFrames可以放在父窗口中嗎?

有沒有辦法讓JFrames自己把它們放在父窗口中? (或者有沒有另一種解決方案,我沒有想到?)

+1

只需將他們的[* contentPanes *](http://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html#getContentPane%28%29)並將它們添加到父級JFrame中。這應該更容易。 – Tom

+0

你的意思是像在一個JFrame中有幾個contentPanes?這甚至工作嗎? –

+0

JFrame的「contenPane」只是一個普通的'JPanel',是的,你可以在JFrame上有幾個面板(在它自己的contentPane上)。 – Tom

回答

1

簡短的回答是沒有。這就是我們通常不鼓勵直接從JFrame(或頂級容器)延伸的原因。您需要嘗試將內容從JFrame移至JPanel之類的內容。這將使您可以更好地決定如何呈現內容。

最簡單的解決方案是通過您的代碼並用extends JPanel代替extends JFrame並糾正它產生的任何編譯器錯誤。你也可以添加一個static方法,將容器的一個實例包裝成JFrame,如果你需要的話。

+0

好的,我會試試。 (這就是傳統在屁股上咬你的地方......--))但是我怎麼用JPanel呢? (說實話,我在GUI編程方面不是很好。) –

+0

孩子們怎麼樣? – Soley

+2

您只需將它們添加到您想要的任何容器中,如另一個「JPanel」或「JInternalFrame」或「JTabbedPane」,或者將它們用在「CardLayout」中,或者根據需要將它們添加到「JFrame」或「JDialog」中 – MadProgrammer

相關問題