在Netbeans Swing GUI Builder中向JFrame添加组件

时间:2013-08-16 08:43:09

标签: java swing netbeans gui-builder

我正在尝试使用Netbeans GUI Builder创建我的应用程序,但我有一个情况。

当我从GUI Builder的Palette窗口将组件(Jlabel或任何其他使用的已定义组件)拖放到JPanel时,Netbeans会自动添加Java代码。例如。生成以下代码:

**private void initComponents() {

        jLabel1 = new javax.swing.JLabel();

}**

现在我有一个ArrayList需要存储由GUIBuilder添加的组件对象。在这种情况下,添加的对象是jLabel1。

ArrayList updateComponentsList = new ArrayList();

所以我需要将此对象存储在此ArrayList中。事实上,每当GUIBuilder添加新组件时,我都需要将新组件对象自动添加到此列表中。

由于GUIBuilder会自动为添加的组件生成Java代码,因此每当添加新组件时,如何让GUIBuilder自动更新此ArrayList?

有人可以帮我解决这个问题吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

它可能对你有用。 当您在当前GUI中添加新组件时,它会自动调用 initComponent()方法来重绘JFrame,您可以通过在initComponent()结束时调用以下方法来获取更新的组件列表块。

public static List getAllComponents(final Container 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;

}