0

我正在尝试做的是动态编辑面板并将其读取到(边框)布局中。面板包含文本字段,我希望用户能够向面板添加或删除文本字段。我尝试如下:从布局中删除面板,向面板添加另一个文本字段,将面板读取到布局中。但是这不起作用(什么也没发生;只有面板被删除但没有读取其中的新文本字段,因此该区域只是空的)。即使我从布局中删除了面板,然后在该位置(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 比较陌生,所以我可能只是在做一些完全错误的事情或其他事情,但我自己看不到。

提前致谢!

斯凯菲。

4

2 回答 2

0

看起来它不会再次重绘。您是否尝试在 gui 更改后调用以下两种方法:

  validate();
  repaint();
于 2010-10-30T18:22:15.887 回答
0

无需移除整个面板。您可以将组件删除/添加到现有面板。在可见的 GUI 上,代码的顺序是:

panel.remove(...);
panel.add(...);
panel.revalidate();
panel.repaint();

如果您需要更多帮助,请发布您的SSCCE

于 2010-10-30T20:49:28.007 回答