Альтернативы CardLayout, которые не содержат ссылок на содержащиеся компоненты - PullRequest
2 голосов
/ 26 августа 2011

Я хотел бы динамически заменить / изменить содержимое панели.Я знаю, что «стандартный» способ сделать это - использовать CardLayout.

Однако большинство компонентов очень жирные.Это большие таблицы данных и огромные диаграммы.

Какие еще есть варианты (включая бесплатные компоненты сторонних производителей)?

Ответы [ 2 ]

2 голосов
/ 26 августа 2011

Вы можете удалить старый контент, создать новый и прочитать новые компоненты. Затем позвоните

container.revalidate(); 
container.repaint();
1 голос
/ 26 августа 2011

Только не используйте LayoutManager.Выпекай сам:

// start with fat compponent 1
JPanel p = new JPanel(new BorderLayout());
FatComponent1 c1 = new FatComponent1();
p.add(c1, BorderLayout.CENTER);

// ...
// replace it e.g. after pressing a button with fat component 2
p.removeAll();
FatComponent2 c2 = new FatComponent2();
p.add(c2, BorderLayout.CENTER);
...