У меня есть JPanel и Jlist, когда пользователь выбирает другой элемент в списке, соответствующий компонент будет добавлен на панель, а предыдущий компонент будет удален. Вот часть кода:
depictorPanel.removeAll();
depictorPanel.invalidate();
depictorPanel.repaint();
GridBagConstraints constraints = new GridBagConstraints();
constraints.fill = GridBagConstraints.BOTH;
depictorPanel.add(viewer, constraints);
viewer.setSize(depictorPanel.getSize());
depictorPanel.invalidate();
depictorPanel.repaint();
где DeppicorPanel — это JPanel, а вьюер — это компонент (кстати, вьюер имеет тип VisualizationView из библиотеки JUNG, которая также наследует JPanel).
Когда я изменяю размер JPanel (выполняется путем изменения размера всего окна, так что все компоненты в окне изменяются), или сворачиваю окно и восстанавливаю его, компонент средства просмотра исчезает, я могу сказать, поскольку я устанавливаю разные цвета фона для DescriberPanel и средство просмотра.
Я также обработал прослушиватель componentResized
в DescriberPanel, чтобы аннулировать и перерисовать средство просмотра, но безуспешно.
viewer
часто показывается с разными деталями, вместо этого просто используйте одинviewer
, но обновляйте детали. 2) Еслиviewer
может также бытьeditor
илиgeneralSettings
(т. е. ограниченное (менее 50) количество определенных компонентов), используйтеCardLayout
. - person Andrew Thompson   schedule 27.09.2013