【问题标题】:CardLayout with JFreeChart switching is not working带有 JFreeChart 切换的 CardLayout 不起作用
【发布时间】:2012-11-03 11:15:47
【问题描述】:

我在使用 JFreeChart 时遇到了一些问题,在这里我解释了我正在创建的内容:Random errors when changing series using JFreeChart。但现在我有另一个相关的问题。当我单击选项卡式窗格时,我必须 ChartPanelCardLayout 中切换图表。我已经用普通的JPanelpublic class JPaintablePanel extends JPanel。根据选项卡显示一些具有不同名称的按钮)进行了尝试,效果很好。但与public class JPaintablePanel extends ChartPanel 相同的东西不起作用,它只显示一个图表。你能告诉我如何强制ChartPanel 切换并保留数据吗?

http://pastebin.com/THuvGan5ChartPanel

http://pastebin.com/Br2swZiC卡片布局

【问题讨论】:

  • 请编辑您的问题以包含一个 sscce 来展示您所描述的问题。
  • pastebin.com/ia0iJNti - 这是我正在调用切换的选项卡式窗格,现在是 sscce 吗?
  • 不,这不是 SSCCE。 JTabbedPane 的扩展是多么丑陋啊。 JTabbedPane 背后的想法是每个选项卡上都有一个组件,您可以通过单击选项卡在这些组件之间切换。不确定您尝试在 JTabbedPane 中使用 CardLayout 做什么
  • 我不知道如何以不同的方式做到这一点。每个选项卡都显示“表单”,用户可以在其中提供参数。切换每个选项卡都会显示 jpanel 和 chartpanel

标签: java swing jfreechart


【解决方案1】:

您无需混合使用选项卡式窗格和卡片布局。只需在每个标签中添加一个单独的ChartPanel

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

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

【讨论】:

  • 是的,但是我的 chartPanel 和附加的 JPanel 没有嵌入到 JtabbedPane 中。很抱歉没有说清楚 JTabbedPane、ChartPanel、JPanel 位于同一个网格上,chart/jpanel 不是 TabbedPane 的一部分,也许这是错误的,但就是这样。就单个图表而言,我已经找到了我所做的,图表仅静态初始化一次,因此仅显示在一个图表上。
  • 好吧,我不确定。但是,是的,您需要为每个要显示的图表创建一个单独的图表对象。
【解决方案2】:

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

您的问题并不清楚,但它可能有助于让包含层次结构反映预期用途。如果每张卡片要包含三个面板,则让每个CardPanel 包含三个相应的字段。在 CardPanel 构造函数中传递任何必需的参数。将这些卡的实例添加到CardLayout,如找到的示例herehere 所示。使用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);
    }
    ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2014-04-17
    • 2018-12-13
    • 2021-09-01
    相关资源
    最近更新 更多