我正在使用NetBeans中的Java和Swing构建一个小应用程序.使用NetBeans设计窗口,我在里面创建了一个带有JPanel的JFrame.
现在我想动态地将一些jTextField添加到JPanel.我写了类似的东西:
Vector textFieldsVector = new Vector(); JTextField tf; int i = 0; while (i < 3) { tf = new JTextField(); textFieldVector.add(tf); myPanel.add(tf); //myPanel is the JPanel where I want to put the JTextFields i++; } myPanel.validate(); myPanel.repaint();
但没有任何反应:当我运行应用程序时,JFrame显示内部的JPanel,但JTextFields没有.
我是编写图形Java应用程序的新手,所以我肯定错过了一些非常简单的东西,但我看不出是什么.
在Netbeans GUI中,将布局管理器设置为GridLayout或FlowLayout(仅用于测试).您可以通过转到GUI编辑器,单击面板,然后右键单击并选择布局来完成此操作.
一旦更改为其他布局,请转到属性并更改布局属性.对于GridLayout,您需要确保有3个网格单元格.
而不是myPanel.validate(),请尝试myPanel.revalidate().
更常规的方法是创建一个自定义JPanel(不使用GUI编辑器),设置自己的布局管理器,用组件填充自己等等.然后,在Netbeans GUI编辑器中,拖放自定义JPanel进入gui编辑.Matisse肯定能够处理Swing组件的运行时修改,但这不是使用它的常规方法.