0

我在使用 JFreeChart 时遇到了一些问题,在这里我解释了我正在创建的内容:使用 JFreeChart 更改系列时出现随机错误。但现在我有另一个相关的问题。当我单击选项卡式窗格时,我必须ChartPanel在图表之间切换。CardLayout我已经用普通的JPanelpublic class JPaintablePanel extends JPanel. 它显示了一些具有不同名称的按钮,具体取决于选项卡),并且效果很好。但同样的事情public class JPaintablePanel extends ChartPanel不起作用,它只显示一个图表。你能告诉我如何强制ChartPanel切换和保存数据吗?

http://pastebin.com/THuvGan5 ChartPanel

http://pastebin.com/Br2swZiC CardLayout

4

2 回答 2

1

很抱歉没有说清楚:JTabbedPaneChartPanelJPanel放在同一个网格上。

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

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);
    }
    ...
}
于 2012-11-03T15:15:39.120 回答
1

您不需要混合选项卡式窗格和卡片布局。ChartPanel只需在每个选项卡中单独放置一个。

JTabbedPane tabs = new JTabbedPane();
tabs.add("Graph 1", new JPrintablePanel());
tabs.add("Graph 2", new JPrintablePanel());

您不必编写任何代码来处理切换选项卡,Swing 将为您处理。如果您添加数据,ChartPanels 也会自动更新。

于 2012-11-03T11:59:45.387 回答