为什么 setBaseSectionPaint 不起作用?

Why setBaseSectionPaint doesn't work?

我有一个饼图。我需要填充所有部分相同的颜色。在 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()是非空的,return它;
  • 如果getSectionPaint(int)是非空的return它;
  • 如果 getSectionPaint(int) 为空但 autoPopulatetrue,请尝试从绘图供应商处获取新油漆 (Plot.getDrawingSupplier());
  • 如果一切都失败了,return getBaseSectionPaint().

相反,尝试这种方法,在省略对 setSectionPaint():

的调用后使用 org.jfree.chart.demo.PieChartDemo1 进行说明
//plot.setSectionPaint(…);
plot.setAutoPopulateSectionPaint(false);
plot.setBaseSectionPaint(Color.blue);