Pessoal, boa tarde.
Estou iniciando em JFreeChart. Iniciando os estudos, tentei criar um simples PieChart para ambiente desktop (Swing).
Criei a classe PieChart para manipular o gráfico e outra para executar a aplicação (Classe Main).
Entretanto, surgiu um erro muito escuro (pelo menos pra mim…hehe).
Segue o código de erro:
Exception in thread "main" java.lang.NoSuchMethodError: org.jfree.ui.RectangleInsets.<init>(DDDD)V
at org.jfree.chart.axis.Axis.<clinit>(Axis.java:146)
at org.jfree.chart.StandardChartTheme.<init>(StandardChartTheme.java:227)
at org.jfree.chart.ChartFactory.<clinit>(ChartFactory.java:229)
at PieChart.criaGrafico(PieChart.java:50)
at PieChart.<init>(PieChart.java:25)
at Principal.main(Principal.java:4)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 2 segundos)
Como é um exemplo muito pequeno, vou postar tudo o que fiz (pra facilitar também claro). Segue:
import java.awt.Dimension;
import javax.swing.JFrame;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.util.Rotation;
public class PieChart extends JFrame{
private static final long serialVersionUID = 1L;
private PieDataset dataset;
private JFreeChart grafico;
public PieChart(String tituloAplicacao, String tituloGrafico)
{
super(tituloAplicacao);
//cria o dataset
this.dataset = criaDataset();
//baseando no dataset criamos o gráfico
this.grafico = criaGrafico(dataset, tituloGrafico);
//insere o painel no gráfico
ChartPanel painelGrafico = new ChartPanel(grafico);
//tamanho padrão
painelGrafico.setPreferredSize(new Dimension(500, 270));
//adiciona o painel à aplicação
setContentPane(painelGrafico);
}
//cria um simples dataset
private DefaultPieDataset criaDataset()
{
DefaultPieDataset resultado = new DefaultPieDataset();
resultado.setValue("LINUX", 29);
resultado.setValue("MAC", 20);
resultado.setValue("WINDOWS", 51);
return resultado;
}
//cria o gráfico
private JFreeChart criaGrafico(PieDataset dataset, String titulo)
{
JFreeChart graf = ChartFactory.createPieChart3D(
titulo, dataset, true, true, false);
PiePlot3D enredo = (PiePlot3D) graf.getPlot();
enredo.setStartAngle(290);
enredo.setDirection(Rotation.CLOCKWISE);
enredo.setForegroundAlpha(0.5f);
return graf;
}
}
E por Ultimo claro o Main pra roda a criança…hehe
public class Principal {
public static void main(String[] args)
{
PieChart demonstracao = new PieChart("Comparação", "Qual sistema operacional você está usando?");
demonstracao.pack();
demonstracao.setVisible(true);
}
}
Desde já agradeço pelo ajuda…XD