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