我遇到了JFreeChart的一些问题,在这里我解释了我正在创建的内容:Random errors when changing series using JFreeChart。但现在我有另一个相关的问题。当我点击选项卡式窗格时,我必须在ChartPanel
中CardLayout
来切换图表。我已经尝试了普通的JPanel
(public class JPaintablePanel extends JPanel
。它显示了一些具有不同名称的按钮,具体取决于标签),并且效果很好。但public class JPaintablePanel extends ChartPanel
同样的事情不起作用,它只显示一个图表。你能告诉我如何强制ChartPanel
切换和保存数据吗?
http://pastebin.com/THuvGan5 ChartPanel
http://pastebin.com/Br2swZiC CardLayout
答案 0 :(得分:1)
您无需混合选项卡式窗格和卡布局。只需在每个标签中单独添加ChartPanel
。
JTabbedPane tabs = new JTabbedPane();
tabs.add("Graph 1", new JPrintablePanel());
tabs.add("Graph 2", new JPrintablePanel());
您不必编写任何代码来处理切换标签,Swing会为您处理。如果您添加数据,ChartPanels也会自动更新。
答案 1 :(得分:1)
对不起,我没有说清楚:
JTabbedPane
,ChartPanel
和JPanel
位于同一网格上。
您的问题并不清楚,但让收容层次结构反映预期用途可能会有所帮助。如果每张卡都要包含三个面板,请让每个CardPanel
包含三个相应的字段。传递CardPanel
构造函数中的所有必需参数。将这些卡片的实例添加到CardLayout
,如找到的示例here和here所示。使用strategy pattern为单个卡提供通用接口的特定实现。
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);
}
...
}