2013-07-24 79 views
1

我是java和JFreecharts的新手,我正在使用Jfreechart創建許多圖表(barcharts和piecharts)。我在創建圖表時顯示圖表。但所有生成的圖表都堆疊在另一個上,最後一個圖表位於最上面。如果我關閉最後一個圖表,所有圖表都會關閉。我想知道是否有可能只有一個框架,並且所有圖表都可以使用「下一個」和「上一個」按鈕進行導航。如果有人有這方面的經驗,請分享。 在此先感謝Jfreechart:顯示多個圖表

+0

有少做JFreeChart的,更與Swing。使用JTabbedPane,用戶可以立即選擇餅圖,因爲有一個選項卡「Pie」。在前一個+下一個,你可以有一個面板,點擊按鈕將下一個/上一個圖表設置到面板中。 –

+0

@JoopEggen:我有6個函數,它們計算6個不同的參數,每個函數創建一個Jfreechart(條形圖,餅圖,xylinechart)。每次我構建一個顯示指定jfreechart的面板時。然後,我設置面板的大小,然後調用setContentPane(面板)並將框架設置爲可見。 –

回答

3

以下是更多幫助您入門的內容。最好使用類似於NetBeans IDE的GUI編輯器。 注意以下內容是鍵入的,而沒有看到編譯器。

字段:

private static final int CHARTS = 6; 
private int currentChartNo = 0; 
private JButton previousButton = new JButton("<"); 
private JButton nextButton = new JButton(">"); 
private JPanel currentChartPanel = new JPanel(); 
private JPanel[] chartPanels = new JPanel[CHARTS]; 

初始化在幀:

// getContentPane(), having per default a BorderLayout. 
add(currentChartPanel , BorderLayout.CENTER); 
add(previousButton, BorderLayout.WEST); 
add(nextButton, BorderLayout.EAST); 

previousButton.addActionListener(new ActionListener() { 
    @Override 
    public void actionPerformed(ActionEvent event) { 
     if (currentChartNo > 0) { 
      getContentPane().remove(currentChartPanel); 
      --currentChartNo; 
      currentChartPanel = chartPanels[currentChartNo]; 
      getContentPane().add(currentChartPanel, BorderLayout.CENTER); 
      repaint(100L); 
     } 
    } 
}); 

它可以由更好,用含有面板額外圖表。

2

作爲多個ChartPanel實例的替代方案,您可以創建一系列數據集並更新單個面板,如here所示。

image