1

我正在尝试在单个窗口中显示多个 jfreecharts。显然,这对于包含的 ChartFrame 是不可能的,所以我尝试将同一个图表的多个副本添加到一个不起作用的 JFrame。有任何想法吗?

JFrame frame = new JFrame("Chart");
frame.getContentPane().add(new ChartPanel(chart1));
frame.getContentPane().add(new ChartPanel(chart2));
frame.pack();
frame.setVisible(true);

使用此代码,我只能在 JFrame 中获得一个图表。

编辑:我添加了另一个数据集和图表,但它仍然只显示其中一个。

4

2 回答 2

5

您的问题的原因是frame.getContentPane(). JFrame内容窗格的默认布局- BorderLayout。阅读更多关于BorderLayout 这里。这个操作

frame.getContentPane().add(new ChartPanel(chart));

等于

frame.getContentPane().add(new ChartPanel(chart), BorderLayout.CENTER);

并添加ChartPanel到内容窗格的 CENTER 区域。其次ChartPanel,您也添加到 CENTER 区域。然后将两个组件添加到同一区域,最后一个添加的组件隐藏了之前添加的所有组件。因此第二个 ChartPanel 隐藏了第一个。

您需要更改布局frame.getContentPane()

你可以用同一张图来两张ChartPanel。尝试将您的代码更改为

JFrame frame = new JFrame("Chart");
frame.getContentPane().add(new ChartPanel(chart), BorderLayout.WEST);
frame.getContentPane().add(new ChartPanel(chart), BorderLayout.EAST);
frame.pack();
frame.setVisible(true);

它不是生产代码。ChartPanel它只是在框架上显示两个的示例。

于 2012-08-15T18:35:18.747 回答
1

您需要有不同的图表实例。如果您使用相同的引用,将显示添加到 ChartPanel 的最后一个引用。

于 2012-08-15T18:05:55.717 回答