2013-08-16 71 views
0

我正嘗試使用Netbeans GUI Builder創建我的應用程序,但我在這裏有一種情況。在NetBeans Swing GUI Builder中向JFrame添加組件

當我從GUI Builder的Palette窗口將組件(Jlabel或任何其他已定義的組件)拖放到JPanel時,Netbeans會自動添加Java代碼。例如。生成以下代碼:

**private void initComponents() { 

     jLabel1 = new javax.swing.JLabel(); 

}** 

現在我有一個ArrayList需要存儲由GUIBuilder添加的組件objct。在這種情況下,添加的對象是jLabel1。

ArrayList updateComponentsList = new ArrayList(); 

所以我需要將此對象存儲在此ArrayList中。事實上,無論何時由GUIBuilder添加新組件,我都需要將新組件對象自動添加到此列表中。

由於GUIBuilder會自動生成添加組件的Java代碼,因此無論何時添加新組件,如何讓GUIBuilder自動更新此ArrayList?

任何人都可以請幫我弄清楚這一點嗎?

在此先感謝。

+0

[crossposted上Coderanch](http://www.coderanch.com/forums/posts/reply/0/618089 ) – mKorbel

回答

0

它可能適合你。 在當前GUI中添加新組件時,它會自動調用initComponent()方法重繪JFrame,並且您可以通過在initComponent()塊末尾調用下面的方法來獲取組件的更新列表。

公共靜態列表getAllComponents(最終容器C){

Component[] comps = c.getComponents(); 
List<Component> compList = new ArrayList<Component>(); 
for (Component comp : comps) { 
    compList.add(comp); 
    if (comp instanceof Container) { 
    compList.addAll(getAllComponents((Container) comp)); 
    } 
} 
return compList; 

}