2012-08-15 55 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