Чтение панели в макет после редактирования панели? - PullRequest
0 голосов
/ 30 октября 2010

Я пытаюсь динамически редактировать панель и читать ее в макете (Граница). Панель содержит текстовые поля, и я хочу, чтобы пользователь мог добавлять или удалять текстовые поля на панель. Я попытался сделать следующее: удалить панель из макета, добавить еще одно текстовое поле на панель, снова добавить панель в макет. Однако это не работает (ничего не произошло; только панель была удалена, но не прочитана с новым текстовым полем в ней, поэтому область была просто пустой). Даже когда я удалил панель из макета, а затем добавил другой компонент к макету в этой позиции (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.

Ответы [ 2 ]

0 голосов
/ 31 октября 2010

Нет необходимости снимать всю панель. Вы можете просто удалить / добавить компоненты на существующую панель. На видимом графическом интерфейсе порядок кода будет:

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

Если вам нужна дополнительная помощь, опубликуйте свой SSCCE .

0 голосов
/ 30 октября 2010

Похоже, он не перекрашивается снова.Вы пытались вызвать следующие два метода после изменения графического интерфейса:

  validate();
  repaint();
...