Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / JavaFX / Graficos estadisticos con javafx y swing

Graficos estadisticos con javafx y swing

Autor jc mouse Lunes, Julio 4, 2016

En este post aprenderemos a usar los gráficos 2d que viene con JavaFX en nuestras aplicaciones java swing. Esto puede sernos de utilidad cuando necesitemos mostrar un gráfico sencillo sin tener que estar agregando otras librerías a nuestro proyecto.

Necesitamos:

  • IDE Netbeans para el desarrollo de la interfaz, pero si prefieres usar Eclipse no hay problema
  • Java 8

Nivel: Intermedio Avanzado

Paso 1: El proyecto

Creamos un nuevo proyecto Java Application que llamaremos “PieChartFX“, a continuación creamos los paquetes necesarios y agregamos un JFrame con el nombre de “PieChartJFrame

chart fx

Paso 2: Interfaz

Ayudándonos de las herramientas de diseño de Netbeans, crearemos la siguiente interfaz:

javafx

A los spinner debes colocar un tipo de modelo numérico.

Paso 3: Código

Abre el JFrame en modo código

  • Lo primero que haremos es añadir los imports necesarios:
import java.awt.BorderLayout;
import java.util.Set;
import javafx.application.Platform;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.embed.swing.JFXPanel;
import javafx.geometry.Side;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.chart.PieChart;
import javafx.scene.chart.PieChart.Data;
import javafx.scene.control.Label;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
  • A continuación declaramos las variables que usaremos en la clase:
    /**
    * Contenedor para el grafico
    */
    private final JFXPanel jfxPanel = new JFXPanel();    
    /**
     * Para almacenar los datos del grafico
     */
    private ObservableList<Data> data2d = FXCollections.observableArrayList();
    /**
     * Grafico 2d FX
     */
    private PieChart pieChart = new PieChart();   
  • De la misma forma declaramos los métodos para integrar FX con swing y también métodos para poder interactuar entre ellos
    /**
     * Crea escena fx
     */
    private void createScene(){
        Platform.runLater(() -> {            
            pieChart.setTitle("Java vs JavaFX");//titulo del grafico
            pieChart.setLegendSide(Side.LEFT);//Posicion de leyenda            
            pieChart.setData(getChartData());            
            updateColors();            
            jfxPanel.setScene(new Scene(pieChart));
        });
    }
        
    /**
     * devuelve los valores para el grafico 2d
     */
    private ObservableList<Data> getChartData() {        
        data2d.addAll(new PieChart.Data("java", 55),
                      new PieChart.Data("JavaFx", 87));          
        return data2d;
    }
    
    /**
     * Actualiza colores de la torta y su leyenda
     */
    private void updateColors(){    
        //colores para cada seccion de la torta
        Color[] colors = { Color.web("#04B404"), Color.web("#FF8000") };
        
        int i = 0;
        //cambia colores de cada seccion de la torta
        for (PieChart.Data data : data2d) {
            String hex = String.format( "#%02X%02X%02X",
                        (int)( colors[i].getRed() * 255 ),
                        (int)( colors[i].getGreen() * 255 ),
                        (int)( colors[i].getBlue() * 255 ) );
              data.getNode().setStyle( "-fx-pie-color: "+hex+";");
              i++;
        }
        //cambia colores de la leyenda
        Set<Node> items;items = pieChart.lookupAll("Label.chart-legend-item");
        i = 0;            
        for (Node item : items) {
            Label label = (Label) item;
            final Rectangle rectangle = new Rectangle(20, 20, colors[i]);                
            label.setGraphic(rectangle);
            i++;
        }
    }

    
    /**
     * Actualiza valores del gráfico
     * @param java valores para java
     * @param javafx valores para javafx
     */
    private void setChartData(int java, int javafx){
        Platform.runLater(() -> {
            data2d.clear();
            data2d.addAll(new PieChart.Data("java", java),
                         new PieChart.Data("JavaFx", javafx));
            updateColors();
        });
        
    }
  • En el constructor de clase realizamos la siguiente modificación
    public PieChartJFrame() {
        initComponents();
        setTitle("Java Swing Graficos Estadisticos con FX");        
        setLocationRelativeTo(null);
        
        //crea la escena en javafx
        createScene();
        //añade grafico FX a Swing
        jPanel1.setLayout(new BorderLayout());
        jPanel1.add(jfxPanel,BorderLayout.CENTER);
    }
  • Finalmente declaramos la acción para cuando pulsemos el botón, se actualicen los datos del gráfico:
    private void btnUpdateActionPerformed(java.awt.event.ActionEvent evt) {                                          
        setChartData( Integer.valueOf(jSpinner1.getValue().toString()),Integer.valueOf(jSpinner2.getValue().toString()));
    }     

ejecutamos el proyecto (F6)

piechart java

Link de descarga pobre <<AQUI>>

Enjoy!!!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Personaliza JTable “MetroUI”

Personaliza JTable “MetroUI”

Un JTable es un componente swing de java que nos permite presentar datos en forma tabular, si bien haciendo uso de IDe...

Multiplicación de matrices

Multiplicación de matrices

En matemática, la multiplicación o producto de matrices es la operación de composición efectuada entre dos matrices, o b...

Localingual: Voces de todo el mundo a tu alcance

Localingual: Voces de todo el mundo a tu alcance

Cada día aparecen cientos sino es que miles de nuevos sitios web en el mundo, pero son muy pocos las webs verdaderamente...

Google Circles en java

Google Circles en java

En este tutorial crearemos el botón de Google+ Google Circles para una interfaz de escritorio 🙂 si no sabes lo que son e...

Ejercicios Resueltos C Sharp

Ejercicios Resueltos C Sharp

1. Dado N números enteros ingresados por teclado, determine el promedio de estos 01 static void Main(string[] args) 02 {...

Crea App multilenguaje con Android Studio

Crea App multilenguaje con Android Studio

En este post aprenderemos los pasos básicos para construir una aplicación android con soporte multilenguaje, utilizaremo...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

Comparte lo que sabes

Categorias

Últimas entradas

“Material Design es una guía integral para el diseño visual, de movimientos y de interacción en distintas platafor...

Un TextView autocompletado nos facilita el ingreso de información en aplicaciones móviles ya que te muestra posibles opc...

Un Tabbed Activity te permite cambiar la vista entre  fragmentos desplazando el dedo  de izquierda a derecha o de derech...

Este 12 de Mayo de 2017 se produjo un ataque masivo mundial del ransomware WannaCry  el  que afecto a más de 200000 comp...

Android Bolivia

Bandera en Alto