我正在尝试从现有应用程序生成饼图,但我遇到了错误。 最新的错误是:
efa.util.chart.ChartUtil中的createPieChart(java.lang.String,org.jfree.data.general.PieDataset,org.jfree.chart.labels.PieSectionLabelGenerator)无法应用于(java.lang.String, org.jfree.data.general.PieDataset) [javac] sectorChart = ChartUtil.createPieChart("",xy); [javac] ^
除此之外,我还需要在函数调用中添加第三个参数,即PieSectionLabelGenerator labelGenerator。但是,我不知道该怎么做。已阅读docs / api但仍不确定。你会提出什么建议?
我正在使用的代码是
imports (please see below)
declaration in the code is JFreeChart sectorChart;
the function:
private void genChart(){
DefaultPieDataset pieDataset = new DefaultPieDataset();
pieDataset.setValue("JavaWorld", new Integer(75));
pieDataset.setValue("Other", new Integer(25));
PieDataset xy = pieDataset;
sectorChart = ChartUtil.createPieChart("",xy,);
}
我认为我的进口没有任何问题,也没有声明对象。如果您想看到这些内容,请与我们联系。我为了简短起见而将其留下。
我无法专门为我的应用程序提供下面的答案。但我在ChartUtil.java文件中有这段代码
public static JFreeChart createPieChart(final String title,
final PieDataset dataset, PieSectionLabelGenerator labelGenerator) {
final JFreeChart chart = ChartFactory.createPieChart(title, dataset,
false, true, true);
labelGenerator = labelGenerator != null ? labelGenerator
: new StandardPieSectionLabelGenerator("{2} {0}",
NumberFormat.getNumberInstance(),
NumberFormat.getPercentInstance());
PiePlot plot = (PiePlot) chart.getPlot();
ChartUtil.formatPiePlot(plot);
plot.setLabelGenerator(labelGenerator);
PieRenderer renderer = new PieRenderer();
renderer.setColor((PiePlot) chart.getPlot(), dataset);
return chart;
}
我相信我们需要弄清楚如何将PieSectionLabelGenerator作为参数传递给函数......
答案 0 :(得分:1)
关于你的编辑:
有一个类实现了您需要的接口,StandardPieSectionLabelGenerator在传递给您的方法时应该允许创建图表。另一种方法是创建一个类来自己实现该方法。我认为这完全取决于你想要用标签实现的目标。
public class SO {
public static void main(String[] args){
DefaultPieDataset pieDataset = new DefaultPieDataset();
pieDataset.setValue("JavaWorld", new Integer(75));
pieDataset.setValue("Other", new Integer(25));
JFreeChart chart = SO.createPieChart("Pie", pieDataset, new StandardPieSectionLabelGenerator());
JFrame frame = new JFrame("Pie");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new ChartPanel(chart));
frame.pack();
RefineryUtilities.centerFrameOnScreen(frame);
frame.setVisible(true);
}
public static JFreeChart createPieChart(final String title,
final PieDataset dataset, PieSectionLabelGenerator labelGenerator) {
final JFreeChart chart = ChartFactory.createPieChart(title, dataset, false, true, true);
PiePlot plot = (PiePlot) chart.getPlot();
ChartUtil.formatPiePlot(plot);
plot.setLabelGenerator(labelGenerator);
PieRenderer renderer = new PieRenderer();
renderer.setColor((PiePlot) chart.getPlot(), dataset);
return chart;
}
}