JFreeChart - como mostrar o gráfico?

4 respostas
J

Aow galera

Tenho o seguinte código:

private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {

PlotOrientation po = PlotOrientation.VERTICAL;

XYSeries series = new XYSeries(Average Size);

series.add(20.0, 10.0);

series.add(40.0, 20.0);

series.add(70.0, 50.0);

XYDataset xyDataset = new XYSeriesCollection(series);

JFreeChart chart = ChartFactory.createXYAreaChart(Título,x,y,xyDataset,po,true,true,true);

ChartPanel panel = new ChartPanel(chart);

frmChart.getContentPane()

}

Não sei o que eu faço pra mostrar o gráfico no meu JFrame. Alguém tem alguma idéia?

Valeu !!!

4 Respostas

A

Tu queres mostrar o grafico no teu frame existente, não?
Eu apenas consegui com um label, nao sei se é o mais correcto:

BufferedImage imagem=chart.createBufferedImage(870, 450); jLabel.setIcon(new ImageIcon(imagem));

Espero que ajude

B

Ola… vc deve adicionar o objeto panel (classe ChartPanel) ao seu Frame. Assim:

setContentPane(panel);

Veja esse exemplo para lhe ajudar. Até mais.

public class BarChartDemo1 extends ApplicationFrame {
    
        public BarChartDemo1(String title) {
    
            super(title);
            CategoryDataset dataset = createDataset();
            JFreeChart chart = createChart(dataset);
            ChartPanel chartPanel = new ChartPanel(chart, false);
            chartPanel.setPreferredSize(new Dimension(500, 270));
            setContentPane(chartPanel);
    
        }
    
        private static CategoryDataset createDataset() {
           
            String series1 = "Agente 1";
            String series2 = "Agente 2";
            String series3 = "Agente 3";
    
            String category1 = "23/06/06";
            String category2 = "24/06/06";
            String category3 = "25/06/06";
            String category4 = "26/06/06";
            String category5 = "27/06/06";
   
            DefaultCategoryDataset dataset = new DefaultCategoryDataset();
    
            dataset.addValue(1.0, series1, category1);
            dataset.addValue(4.0, series1, category2);
            dataset.addValue(3.0, series1, category3);
            dataset.addValue(5.0, series1, category4);
            dataset.addValue(5.0, series1, category5);
    
            dataset.addValue(5.0, series2, category1);
            dataset.addValue(7.0, series2, category2);
            dataset.addValue(6.0, series2, category3);
            dataset.addValue(8.0, series2, category4);
            dataset.addValue(4.0, series2, category5);
   
            dataset.addValue(4.0, series3, category1);
            dataset.addValue(3.0, series3, category2);
            dataset.addValue(2.0, series3, category3);
            dataset.addValue(3.0, series3, category4);
            dataset.addValue(6.0, series3, category5);
            
            return dataset;
            
        }
        
        private static JFreeChart createChart(CategoryDataset dataset) {
            
            JFreeChart chart = ChartFactory.createBarChart(
                "Vendas",        
                "Datas",               
                "Valores",                 
                dataset,                  
                PlotOrientation.VERTICAL, 
                true,                     
                true,                   
                false                  
            );
    
            chart.setBackgroundPaint(Color.white);
    
            CategoryPlot plot = chart.getCategoryPlot();
            plot.setBackgroundPaint(Color.lightGray);
            plot.setDomainGridlinePaint(Color.white);
            plot.setDomainGridlinesVisible(false);
            plot.setRangeGridlinePaint(Color.white);
            plot.setRangeGridlinesVisible(false);
   
            final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
     rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
            BarRenderer renderer = (BarRenderer) plot.getRenderer();
            renderer.setDrawBarOutline(false);
            
            GradientPaint gp0 = new GradientPaint(
                0.0f, 0.0f, Color.blue, 
                0.0f, 0.0f, new Color(0, 0, 64)
            );
            GradientPaint gp1 = new GradientPaint(
                0.0f, 0.0f, Color.green, 
                0.0f, 0.0f, new Color(0, 64, 0)
            );
            GradientPaint gp2 = new GradientPaint(
                0.0f, 0.0f, Color.red, 
                0.0f, 0.0f, new Color(64, 0, 0)
            );
            renderer.setSeriesPaint(0, gp0);
            renderer.setSeriesPaint(1, gp1);
            renderer.setSeriesPaint(2, gp2);
            
            CategoryAxis domainAxis = plot.getDomainAxis();
            domainAxis.setCategoryLabelPositions(
                CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 6.0)
            );
            
            return chart;
            
        }
        
        public static void main(String[] args) {
    
            BarChartDemo1 demo = new BarChartDemo1("Bar Chart Demo");
            demo.pack();
            RefineryUtilities.centerFrameOnScreen(demo);
            demo.setVisible(true);
    
        }
    
    }
J

Valeu cara, deu certo !!!

M

to subindo o tópico pq não entendi uma coisa…

onde está este método???

setContentPane(panel)

obrigado

Criado 6 de novembro de 2006
Ultima resposta 31 de jan. de 2007
Respostas 4
Participantes 4