Criar um simples grafico com JfreeChart

1 resposta
Thiago_de_Paula_Bese

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

1 Resposta

ViniGodoy

Movido para o fórum de interface gráfica.

Criado 28 de janeiro de 2012
Ultima resposta 29 de jan. de 2012
Respostas 1
Participantes 2