2012-11-09 94 views

回答

9

方法getLegendItem(),看到here,提供了在您選擇的任何Container中渲染圖例項目所需的所有信息。 GridLayout(0, 2)會將它們排列成兩列以顯示任意數量的行。要取消現有圖例,請在致電圖表工廠時將legend設置爲false;物品仍然可用,建議here

附錄:根據PieChartDemo1,該片段使用getLegendItems().iteratorColorIcon的變體。

legend image

public static JPanel createDemoPanel() { 
    JPanel panel = new JPanel(); 
    JFreeChart chart = createChart(createDataset()); 
    panel.add(new ChartPanel(chart)); 
    panel.add(createLegendPanel((PiePlot) chart.getPlot())); 
    return panel; 
} 

private static JPanel createLegendPanel(PiePlot plot) { 
    JPanel panel = new JPanel(new GridLayout(0, 2, 5, 5)); 
    Iterator iterator = plot.getLegendItems().iterator(); 
    while (iterator.hasNext()) { 
     LegendItem item = (LegendItem) iterator.next(); 
     JLabel label = new JLabel(item.getLabel()); 
     label.setIcon(new ColorIcon(8, item.getFillPaint())); 
     panel.add(label); 
    } 
    return panel; 
} 
+0

也考慮一個'PlotChangeListener'來更新圖例面板。 – trashgod

+0

謝謝,您的編輯和評論非常有幫助 – user1581508

2

看一看這個線程:Link

好像你正在尋找的東西。如果沒有,請張貼更多信息或屏幕截圖,瞭解您擁有的內容以及您需要的內容。

+0

不幸的是,這隻適用於舊版本的JFreeChart的......但至少它表明一個人如何能爲JFC的新版本創建另一列多傳說級。 :) +1 – brimborium

+1

@brimborium哦,我看到線程已經有幾年了,但我沒有真正檢查代碼。仍然推向正確的方向我猜 – moeTi

+0

這就是爲什麼你從我這裏得到upvote;) – brimborium

相關問題