Java 带JFreeChart切换的CardLayout不工作

Java 带JFreeChart切换的CardLayout不工作,java,swing,jfreechart,Java,Swing,Jfreechart,我在使用JFreeChart时遇到了一些问题,这里我解释了我正在创建的内容:。但现在我有另一个相关的问题。我必须在CardLayout中的ChartPanel在单击选项卡窗格时在图形之间切换。我用普通的JPanel(公共类JPaintablePanel扩展了JPanel。根据选项卡的不同,它会显示一些名称不同的按钮),效果很好。但是公共类JPaintablePanel Extendes ChartPanel的相同功能不起作用,它只显示一个图形。您能告诉我如何强制图表面板切换并保留数据吗 图表面板

我在使用JFreeChart时遇到了一些问题,这里我解释了我正在创建的内容:。但现在我有另一个相关的问题。我必须在
CardLayout
中的
ChartPanel
在单击选项卡窗格时在图形之间切换。我用普通的
JPanel
公共类JPaintablePanel扩展了JPanel
。根据选项卡的不同,它会显示一些名称不同的按钮),效果很好。但是
公共类JPaintablePanel Extendes ChartPanel的相同功能不起作用,它只显示一个图形。您能告诉我如何强制
图表面板
切换并保留数据吗

图表面板


CardLayout

您不需要混合使用选项卡式窗格和卡片布局。只需在每个选项卡中放置一个单独的
图表面板

JTabbedPane tabs = new JTabbedPane();
tabs.add("Graph 1", new JPrintablePanel());
tabs.add("Graph 2", new JPrintablePanel());
您不必编写任何代码来处理切换选项卡,Swing将为您处理。如果添加数据,图表面板也将自动更新

对不起,我没有说清楚:
JTabbedPane
ChartPanel
JPanel
位于同一个网格上

您的问题并不清楚,但它可能有助于让包容层次结构反映预期用途。如果每张卡要包含三个面板,则让每张
CardPanel
包含三个相应的字段。在
CardPanel
构造函数中传递任何必需的参数。将这些卡片的实例添加到
卡片布局
,如找到的示例和中所示。使用为单个卡提供公共接口的特定实现

public class CardPanel extends JPanel {

    private JTabbedPane tabPane;
    private ChartPanel chart;
    private JPanel panel;

    public CardPanel(Dataset dataset, Context context, ...) {
        super(new GridLayout(0, 1));
        // initialize fields ...
        this.add(tabs);
        this.add(chart);
        this.add(panel);
    }
    ...
}

请编辑您的问题,以包含一个显示您描述的问题的列表-这是我调用切换的选项卡式窗格,现在是sscce吗?不,那不是sscce。这是多么丑陋的
JTabbedPane
扩展。
JTabbedPane
背后的思想是,每个选项卡上都有一个组件,您可以通过单击选项卡在这些组件之间切换。不知道你想用
JTabbedPane
中的
CardLayout
做什么,我不知道如何用不同的方式来做。每个选项卡都显示“表单”,用户可以在其中提供参数。切换每个选项卡时,会显示jpanel和chartpanel是,但我的chartpanel和其他jpanel不会嵌入到JtabbedPane中。我很抱歉没有明确说明JTabbedPane、ChartPanel、JPanel放在同一个网格上,chart/JPanel不是选项卡窗格的一部分,也许这是错误的,但事实就是这样。就单个图表而言,我已经找到了我所做的,图表只静态初始化了一次,所以它只显示在一个图表上。好的,我不确定。但是,对于要显示的每个图形,都需要一个单独的图表对象。