Java 展开地图不';JPanel中的t刷新

Java 展开地图不';JPanel中的t刷新,java,swing,processing,Java,Swing,Processing,对于我正在开发的应用程序,我使用UnfolingMaps库来显示地图。地图放在一个JPanel中。在同一个JPanel中显示了其他JPanel。 因此,我通过按钮在地图和其他面板之间切换 问题是地图不会刷新。我可以显示它一次,当我显示另一个面板,然后返回地图时,地图不会显示。我当时唯一的选择就是重新启动应用程序 private void showVis(String chart) { //visual is the JPanel where elements are viewed

对于我正在开发的应用程序,我使用UnfolingMaps库来显示地图。地图放在一个JPanel中。在同一个JPanel中显示了其他JPanel。 因此,我通过按钮在地图和其他面板之间切换

问题是地图不会刷新。我可以显示它一次,当我显示另一个面板,然后返回地图时,地图不会显示。我当时唯一的选择就是重新启动应用程序

    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中显示了其他JPanel。所以我在 使用按钮帮助地图和其他面板

  • 它应该是
    parentPanel.revalidate()parentPanel.repaint()

  • 更好的方法是使用指定用于此目的的,而不是删除一个新的
    JComponent
    ,然后将其添加到已经可见的Swing GUI中

在同一个JPanel中显示了其他JPanel。所以我在 使用按钮帮助地图和其他面板

  • 它应该是
    parentPanel.revalidate()parentPanel.repaint()

  • 更好的方法是使用指定用于此目的的,而不是删除一个新的
    JComponent
    ,然后将其添加到已经可见的Swing GUI中


我已经尝试了您的CardLayout解决方案,效果很好。谢谢你,我试过你的卡片布局解决方案,效果不错。谢谢