对于我正在开发的应用程序,我使用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();
}
}
字符串图表决定显示哪个面板。
答案 0 :(得分:4)
在同一JPanel中展示了其他Jpanel。所以我在之间做出改变 在按钮的帮助下绘制地图和其他面板。
应该是parentPanel.revalidate();
,然后是parentPanel.repaint();
更好的是CardLayout (So I change between the
map and other panels with the help of buttons.)的使用被指定用于此目的,而不是删除然后添加新的JComponent
(s)到已经可见的Swing GUI