我有一个饼图。我需要用相同的颜色填满所有部分。在jfreechart指南中,我找到了方法setBaseSectionPaint
,但是它没有用。我在循环中使用了方法setSectionPaint
,但是不正确(程序代码过多)。为什么setBaseSectionPaint不起作用?
private JFreeChart createPieChart(PieDataset piedataset){
JFreeChart jfreechart = ChartFactory.createPieChart("Select the desired dictionary:", piedataset,true, true, false);
PiePlot pieplot = (PiePlot) jfreechart.getPlot();
for (int i=0;i<piedataset.getItemCount();i++){ //excess program code
pieplot.setSectionPaint(piedataset.getKey(i),new Color(54, 95, 196));
}
pieplot.setBaseSectionPaint(new Color(54, 95, 196)); //doesn't work
return jfreechart;
}
最佳答案
除其他方法外,PiePlot
方法drawItem()
调用lookupSectionPaint()
,这说明了所使用的算法:
如果getSectionPaint()
非空,则返回它;
如果getSectionPaint(int)
为非null,则返回它;
如果getSectionPaint(int)
为null但autoPopulate
为true
,则尝试从图形供应商(Plot.getDrawingSupplier()
)获取新的涂料;
如果其他所有方法均失败,则返回getBaseSectionPaint()
。
而是尝试这种方法,在省略对org.jfree.chart.demo.PieChartDemo1
的调用后使用setSectionPaint()
进行说明:
//plot.setSectionPaint(…);
plot.setAutoPopulateSectionPaint(false);
plot.setBaseSectionPaint(Color.blue);