jueves, 29 de diciembre de 2011

Instalar JFreeChart en Netbeans

Para mi PFC necesito mostrar determinados datos mediante gráficas. Java tiene muchas opciones para hacer esto. Al principio pensé en usar simplemente Java2D, pero más tarde barajé la opción de trabajar con alguna biblioteca con un mayor nivel de abstracción.

JFreeChart es una biblioteca que simplifica muchísimo la tarea de mostrar gráficas. El proceso es sencillo: Primero construimos un objeto Dataset, con el que podremos introducir los datos del gráfico, después creamos un objeto ChartFactory, e invocamos al método createXChart() con el que podremos establecer el título de la tabla, el Dataset asociado y otros parámetros (leyenda, ejes, etc.).

Para instalar la librería en NetBeans 7 haremos lo siguiente:

1. Descargamos los archivos necesarios:

Última versión de JFreeChart

Ant (necesario para generar la documentación Javadoc)

NetBeans (Yo utilizo la versión SE)

2. Descomprimimos JFreeChart en un directorio (yo hice una carpeta “Libraries” para guardar todas las librerías).

3. (Opcional) Descomprimimos Ant. En Windows es necesario añadir las variables de entorno ANT_HOME para que apunte al directorio donde esté Ant. También es necesario añadir al PATH de Windows el directorio Bin de Ant y el directorio Bin de JDK. Una vez hecho esto, mediante línea de comandos accedemos a la carpeta donde hemos descomprimido JFreeChart y dentro de esta, a la subcarpeta Ant:

Captura

4. (Opcional) Ejecutamos el comando para generar la documentación Javadoc:

Captura2

Si todo ha ido bien, al cabo de unos segundos (pueden ser bastantes) el sistema mostrará “BUILD SUCCESSFUL”, indicando que la documentación se ha generado correctamente:

Captura3

3. En NetBeans pulsamos en Tools > Libraries para añadir JFreeChart. Para ello pulsamos en el botón “New Library…”

En Library name escribimos el nombre que queremos darle a la librería (en mi caso he optado por JFreeChart-1.0.14).

En Library Type seleccionamos Class Libraries y pulsamos OK.

Ahora nuestra librería aparecerá en la lista izquierda de la ventana. Sólo nos queda añadir las referencias de la misma:

En la pestaña Classpath, pulsamos “Add JAR/Folder…” y seleccionamos los archivos jcommon y jfreechart, que se encuentran en la subcarpeta lib de JFreeChart:

Captura4

Captura5

En la pestaña Sources añadimos la subcarpeta source de JFreeChart:

Captura6

Si hemos seguido los pasos opcionales, tendremos generada la documentación en Javadoc, así que en en la pestaña Javadoc añadimos la subcarpeta Javadoc (no estará si no hemos generado la documentación, pero no es necesaria para el funcionamiento de la librería):

Captura7

Terminamos pulsando en OK, y ya tendremos todo instalado.

Para probar que todo funcione correctamente podemos utilizar el código que escribí para probarlo:

package jfcexample;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;

/**
*
* @author Manuel
*/
public class First {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
       
        // Creamos el DataSet
        DefaultPieDataset dataset = new DefaultPieDataset();
       
        // Establecemos unas categorías de ejemplo
        dataset.setValue("Ej1",43.2);
        dataset.setValue("Ej2",27.9);
        dataset.setValue("Ej1",79.5);
       
        // Creamos la tabla
        JFreeChart chart = ChartFactory.createPieChart(
                "Sample Pie Chart",
                dataset,
                true,
                true,
                false
                );
       
        // Mostramos la tabla
        ChartFrame frame = new ChartFrame("Test",chart);
        frame.pack();
        frame.setVisible(true);
    }
}

Si todo está correcto, al ejecutarlo deberíamos obtener lo siguiente:

Captura8

NOTA: Aunque si no seguimos los pasos opcionales no tendremos la documentación en Javadoc, siempre podemos consultarla online en la página oficial.