2012-08-15 71 views
1

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

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

有了这个代码,我只得到JFrame中的一个图表。

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

回答

4

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

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

等于

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

,并添加ChartPanel到内容窗格中的中心区域。第二个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的例子。

+1

+1用于考虑布局;有一个使用'GridLayout'的相关示例[这里](http://stackoverflow.com/a/7602126/230513)。 – trashgod 2012-08-15 18:45:22

+0

非常感谢,我怀疑它是某种布局问题,但这显示了我使用摆动的方式;) – pdel 2012-08-15 18:50:18

1

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

+0

我添加了另一个图表实例(上面的编辑),它仍然只显示一个。 – pdel 2012-08-15 18:30:37