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:
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»
Paso 2: Interfaz
Ayudándonos de las herramientas de diseño de Netbeans, crearemos la siguiente interfaz:
A los spinner debes colocar un tipo de modelo numérico.
Paso 3: Código
Abre el JFrame en modo código
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;
/** * 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();
/** * 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(); }); }
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); }
private void btnUpdateActionPerformed(java.awt.event.ActionEvent evt) { setChartData( Integer.valueOf(jSpinner1.getValue().toString()),Integer.valueOf(jSpinner2.getValue().toString())); }
ejecutamos el proyecto (F6)
Link de descarga pobre <<AQUI>>
Enjoy!!!
Android hace uso de la base de datos SQLite para el manejo de registros en las aplicaciones. Según Santa Wikipedia defin[...]
Un Tile o azulejo, es una parte seccionada de una imagen, por ejemplo la imagen de abajo (chica anime) esta dividida en[...]
DOM4J es una de las librerías para java más populares para el trabajo con XML ya que nos permite crea, editar y leer doc[...]
Hace tiempo me pidieron el código fuente de un juego de Puzzle de Neon Genesis Evangelión, este juego es completo, tiene[...]
MAUS es una aplicación para dispositivos móviles con el Sistema Operativo Android que te permite realizar exámenes desde[...]
XJC es una herramienta de linea de comandos del compilador de esquemas de JAXB que se puede utilizar para convertir un e[...]