2011-11-28 56 views
2

在我的應用程序中,我通過雙軸酒吧/線JFreeChart在表格中顯示數據。爲了節省一些空間(因爲圖表被保存爲PNG並且使用iText PDF進行PDF處理),我想從Legend中獲取圖形,在表格視圖中使用它們,並刪除圖例。JFreeChart獲取圖例圖形

有沒有辦法抓住圖例與圖例項目?我找到了LegendGraphic類,這看起來像是從LegendItem中檢索圖標的方法,但在LegendItem的文檔中沒有找到任何可以指示它的文件。

如果將它們返回到易於用於創建com.itextpdf.text.Image的對象(如byte[]java.awt.Image)中,將會更好。

回答

2

您可以使用圖表渲染器的getLegendItem()方法獲得系列'LegendItem。您可以使用ShapeUtilities的方法更改系列'Shape,如example所示。有關createStandardSeriesShapes()如何工作的詳細信息,另請參閱DefaultDrawingSupplier

附錄:請注意,即使您創建沒有圖例或以後使用chart.removeLegend()的圖表,渲染器的getLegendItem()方法也能正常工作。一旦你有了LegendItem,你可以根據需要使用它的屬性。

System.out.println(renderer.getLegendItem(0, 0).getShape()); 
System.out.println(renderer.getLegendItem(0, 0).getFillPaint()); 
+0

感謝您的示例。這將使我能夠使用Graphics2D繪製出一些形狀等。我希望API中有某些東西可以防止我重建圖例圖標,但這仍然有效。再次感謝。 – king14nyr

+0

'LegendItem'的臨時性讓圖例與渲染器保持同步。你可以實現'RendererChangeListener'並讓你的表格向渲染器註冊。 – trashgod

+0

另請參閱此[示例](http://stackoverflow.com/a/13309587/230513)。 – trashgod