Для приложения, которое я разрабатываю, я использую библиотеку UnfoldingMaps для отображения карты. Карта помещается внутри JPanel. В той же JPanel показаны другие Jpanels. Поэтому я переключаюсь между картой и другими панелями с помощью кнопок.
Проблема в том, что карта не обновляется. Я могу отобразить его один раз, и когда я отображу другую панель и вернусь к карте, карта не будет отображаться. Единственный вариант, который я получил, это перезапустить приложение.
private void showVis(String chart) {
//visual is the JPanel where elements are viewed in
visual.removeAll();
if (chart.equals("bar")) {
bar.setPart("", partial, location);
bar.createVisualisation(ai);
if (bar.checkGraph()) {
System.out.println("Really creating bar");
ChartPanel panB = bar.getPanel();
JPopupMenu popB = panB.getPopupMenu();
panB.setPopupMenu(popB);
visual.add(panB);
visual.validate();
}
} else if (chart.equals("map")) {
map = null;
map = new Maps();
map.setPart("", partial, location);
map.createVisualisation(ai);
if (map.checkGraph()) {
map.init();
visual.add(map);
visual.validate();
}
}
строчная диаграмма определяет, какая панель будет показана.
В той же JPanel показаны другие Jpanels. Поэтому я переключаюсь между картой и другими панелями с помощью кнопок.
он должен быть parentPanel.revalidate();
а затем parentPanel.repaint();
лучше использовать CardLayout (поэтому я переключаюсь между картой и другими панелями с помощью кнопок.) предназначен для этой цели, а не для удаления, а затем для добавления нового JComponent
(s) в уже видимый графический интерфейс Swing