Passando parametros pro JFreeChart

0 respostas
F

A classe a seguir é de um Grafico pizza que recebe 2 informações (Titulo e Valor)

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.PieSectionLabelGenerator;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.util.Rotation;

public class PieChart3DDemo4 extends ApplicationFrame {


    public PieChart3DDemo4(final String title) {

        super(title);
        final PieDataset dataset = createSampleDataset();
        final JFreeChart chart = createChart(dataset);
        final ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
        setContentPane(chartPanel);

    }
    
    private PieDataset createSampleDataset() {
        
        final DefaultPieDataset result = new DefaultPieDataset();
        result.setValue("opção 1", new Double(43.2));
        result.setValue("opção 2", new Double(10.0));
        result.setValue("opção 3", new Double(17.5));
        result.setValue("opção 4", new Double(32.5));
        result.setValue("opção 5", new Double(1.0));
        return result;
        
    }
    
    private JFreeChart createChart(final PieDataset dataset) {
        
        final JFreeChart chart = ChartFactory.createPieChart3D(
            "Pie Chart 3D Demo 4",  // chart title
            dataset,                // data
            true,                   // include legend
            true,
            false
        );

        final PiePlot3D plot = (PiePlot3D) chart.getPlot();
        plot.setStartAngle(290);
        plot.setDirection(Rotation.CLOCKWISE);
        plot.setForegroundAlpha(0.5f);
        plot.setNoDataMessage("No data to display");
        plot.setLabelGenerator(new CustomLabelGenerator());
        return chart;
        
    }
    

    public static void main(final String[] args) {

        final PieChart3DDemo4 demo = new PieChart3DDemo4("Pie Chart 3D Demo 4");
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);

    }
    

    static class CustomLabelGenerator implements PieSectionLabelGenerator {
        
        public String generateSectionLabel(final PieDataset dataset, final Comparable key) {
            String result = null;    
            if (dataset != null) {
                if (!key.equals("PHP")) {
                    result = key.toString();   
                }
            }
            return result;
        }
   
    }

}

MInha duvida é como posso fazer que o metodo a seguir receba 2 valores passados de outra classe ? um list resolveria recebendo esses 2 valores, sendo uma string e um double ? :?:

private PieDataset createSampleDataset() {
        
        final DefaultPieDataset result = new DefaultPieDataset();
        result.setValue("opção 1", new Double(43.2));
        result.setValue("opção 2", new Double(10.0));
        result.setValue("opção 3", new Double(17.5));
        result.setValue("opção 4", new Double(32.5));
        result.setValue("opção 5", new Double(1.0));
        return result;
        
    }

Grato desde já ;D

Criado 27 de setembro de 2011
Respostas 0
Participantes 1