为什么 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)
为空但 autoPopulate
为 true
,请尝试从绘图供应商处获取新油漆 (Plot.getDrawingSupplier()
);
- 如果一切都失败了,return
getBaseSectionPaint()
.
相反,尝试这种方法,在省略对 setSectionPaint()
:
的调用后使用 org.jfree.chart.demo.PieChartDemo1
进行说明
//plot.setSectionPaint(…);
plot.setAutoPopulateSectionPaint(false);
plot.setBaseSectionPaint(Color.blue);
我有一个饼图。我需要填充所有部分相同的颜色。在 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)
为空但autoPopulate
为true
,请尝试从绘图供应商处获取新油漆 (Plot.getDrawingSupplier()
); - 如果一切都失败了,return
getBaseSectionPaint()
.
相反,尝试这种方法,在省略对 setSectionPaint()
:
org.jfree.chart.demo.PieChartDemo1
进行说明
//plot.setSectionPaint(…);
plot.setAutoPopulateSectionPaint(false);
plot.setBaseSectionPaint(Color.blue);