2014-04-16 59 views
-1

我已經延長了一些額外的功能,我需要JPanel類的,然後我創建它的一個實例,像這樣:爲什麼我不能將組件從JFrame中取出?

CustomPanel pan = new CustomPanel(); 

我把它添加到我的我的框架:

frame.getContentPane().add(pan); 

然後我需要在面板背部離開框架,我這樣做,像這樣:

for (Component c : frame.getComponents()) 
{ 
    if(c instanceof CustomPanel) 
    { 
     System.out.println("Should get here"); 
    }  
} 

但它並不在內存中的CustomPanel存在,而是存在作爲一個JPanel,W hy是這個嗎?

回答

3

據我瞭解,JFrame中包含一個JPanel,當您使用的getContentPane您的自定義面板添加到JFrame()。添加(PAN),你實際上添加自定義面板到JFrame的JPanel的。我猜你必須調用frame.getContentPane()。getComponents();遍歷JFrame面板中包含的組件。

+1

+1請參閱[使用頂層容器](http://docs.oracle.com/javase/tutorial/uiswing/components/toplevel.html)瞭解更詳細的JFrame結構。 – camickr

+1

完美地工作,感謝您的幫助 – William

0

您的應改爲:

for (Component c : frame.getContentPane().getComponents()) 

你沒有你的面板添加到框架,你把它添加到內容窗格中。

+0

-1,這個建議是早些時候提出的。沒有必要混淆與重複的答案論壇。 – camickr

相關問題