我想要做的是动态编辑面板并将其读取到(边框)布局。该面板包含文本字段,我希望用户能够向面板添加或删除文本字段。我尝试的是以下内容:从布局中移除面板,向面板添加另一个文本区域,将面板读入布局。然而,这不起作用(没有发生任何事情;只有面板被删除,但没有与其中的新文本区重新读取,所以该区域只是空的)。即使当我从布局中移除面板,然后将另一个组件添加到该位置(BorderLayout.EAST)的布局中时,什么都没有发生(只是空的)。编辑面板后读取面板布局?
这是代码中的哪一个不工作的一部分:
vfields[blocks] = new TextField("0"); //add new textfield to the array of textfields
blocks += 1;
dp.blocks = blocks;
this.remove(values_fields); //remove the values_fields panel from the borderlayout
values_fields.add(vfields[blocks]); //add new component,textfield to the panel
this.add(values_fields, BorderLayout.EAST); //readd the panel to the border layout<-- doesn't work
我希望有人能帮助我。我对Java相对陌生,所以我可能只是在做一些完全错误的事情,但我自己并没有看到它。
在此先感谢!
Skyfe。
嗨,我试过了,它可以从面板中移除组件。但是,当我尝试以这种方式动态地向面板添加组件时,它不起作用。 Works: \t \t \t \t \t values_fields.remove(vfields [blocks-1]); \t \t \t \t \t values_fields.validate(); \t \t \t \t \t values_fields.repaint(); 不起作用: \t \t \t \t \t values_fields.add(vfields [blocks]); \t \t \t \t \t values_fields.validate(); \t \t \t \t \t values_fields.repaint(); – Skyfe 2010-10-30 23:49:48
更新:我似乎得到了一个Java NullPointerException异常,我使用add方法:values_fields.add(vfields [blocks])。怎么了? – Skyfe 2010-10-30 23:55:38
如果在添加组件时不起作用,那么可能是因为您使用的布局管理器需要您指定约束。例如,当您使用IDE创建表单时会发生这种情况。大多数IDE使用GroupLayout,它们需要您指定几个约束。我的建议是转储IDE并自己编写表单,以便知道如何添加组件以及如何指定所需的约束。 – camickr 2010-10-30 23:57:48