我试图在一个窗口中显示多个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中只得到一张图表。

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

最佳答案

问题的原因是frame.getContentPane()的布局。
JFrame内容窗格中的默认布局-BorderLayout。阅读有关BorderLayout here的更多信息。
此操作

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

09-10 09:30
查看更多