Una forma sencilla y rápida de aprender JAVA, observando y deduciendo cómo se comporta el lenguaje a través de ejemplos prácticos.

Archivo del blog

martes, 21 de octubre de 2014

Gráficas con JFreeChart (VI). Poner la gráfica dentro un jPanel.

Creamos un nuevo proyecto de tipo "JFrame Form" y en modo diseño le agregamos un jPanel y un jButton.





Código (Ventana1.java):

package freejchartpanel1;

import javax.swing.JFrame;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;


public class Ventana1 extends javax.swing.JFrame {
   
    public Ventana1() {
        initComponents();        
    }
                         
    private void initComponents() {...} // aqui va el codigo generado automáticamente por NetBeans

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

        double poblacion = 0.7;
        double tasa_crecimiento = 3.9;

        XYSeries series = new XYSeries("");

        for (int i = 0; i < 30; i++) {

            series.add(i, poblacion * 100);
            // Variante de la ecuacion de Verhulst
            poblacion = poblacion * tasa_crecimiento * (1 - poblacion);
        }

        XYSeriesCollection dataset = new XYSeriesCollection();
        dataset.addSeries(series);

        JFreeChart chart = ChartFactory.createXYLineChart(
                "Crecimiento Población",
                "Tiempo ->",
                "Población ->",
                dataset,
                PlotOrientation.VERTICAL,
                false,
                false,
                false
        );

        // Mostramos la grafica dentro del jPanel1
        ChartPanel panel = new ChartPanel(chart);        
        jPanel1.setLayout(new java.awt.BorderLayout());
        jPanel1.add(panel);   
        jPanel1.validate();

    }                                        

    public static void main(String args[]) {
        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Ventana1().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JPanel jPanel1;
    // End of variables declaration                   
}


Resultado:




















6 comentarios:

  1. Muchas gracias, esto lo estuve buscando todo un día, y era tan sencillo como eso!!

    ResponderEliminar
  2. setLayout(new java.awt.BorderLayout());
    Culpa de esta linea de codigo renegue todo un dia!
    Gracias!

    ResponderEliminar
  3. Que crack, esto es lo único que encontré en todo internet que funcione.

    ResponderEliminar

Con la tecnología de Blogger.