对于我正在开发的应用程序,我利用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 (So I change between themap and other panels with the help of buttons.)的用法,而不是先删除后再向已经可见的Swing GUI添加新的JComponent

10-08 07:04