我有一个饼图。我需要用相同的颜色填满所有部分。在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但autoPopulatetrue,则尝试从图形供应商(Plot.getDrawingSupplier())获取新的涂料;
如果其他所有方法均失败,则返回getBaseSectionPaint()


而是尝试这种方法,在省略对org.jfree.chart.demo.PieChartDemo1的调用后使用setSectionPaint()进行说明:

//plot.setSectionPaint(…);
plot.setAutoPopulateSectionPaint(false);
plot.setBaseSectionPaint(Color.blue);


java - 为什么setBaseSectionPaint不起作用?-LMLPHP

08-04 00:04