Я пытаюсь создать piechart из существующего приложения, но я получаю ошибки. Последняя ошибка:
createPieChart (java.lang.String, org.jfree.data.general.PieDataset, org.jfree.chart.labels.PieSectionLabelGenerator) в efa.util.chart.ChartUtil не может применяться к (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 в функцию в качестве аргумента...
Что касается вашего редактирования:
Существует класс, который реализует требуемый интерфейс, 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;
}
}