Saltar al contenido
Portada » Tutorial JavaFX

Tutorial JavaFX

JavaFX es una librería utilizada para hacer aplicaciones de escritorio así como aplicaciones enriquecidas de internet (RIA). Las aplicaciones construidas sobre JavaFX pueden correr en múltiples plataformas como web, mobile y escritorio.

Uno de los objetivos de JavaFX no es solo reemplazar a Swing, también añade muchas funcionalidades nuevas. JavaFX tiene sus propios componentes y no depende del sistema operativo.

1.- Características principales

ElementosDescripción
FXMLFXML es un lenguaje XML declarativo. La codificación se puede hacer en FXML para proveer una GUI mejorada al usuario.
Scene BuilderGenera FXML de cara a poder moverlo a un IDE.
Web viewLas páginas web pueden ser embebidas con las aplicaciones JavaFX. Web view utiliza la tecnología WebKitHTML para embeber las webs.
Controler UI internosContiene componentes internos que no son dependientes del sistema operativo. Estos componentes UI son suficientes para construir una aplicación completa.
Uso de CSSPodemos mejorar la vista de nuestra aplicación aplicando conceptos de CSS.
Interoperabilidad con SwingLas aplicaciones pueden ser embebidas con código swing usando la clase de swing Node. Podemos actualizar la aplicación existente de swing para usar la potencia del framework.
Canvas APIProporciona métodos para dibujar directamente en un área de una escena.
Conjunto de APIsConjunto rico de APIs para el desarrollo de aplicaciones GUI.
Librería de gráficos integradaConjunto integrado de clases para gestionar los gráficos 2D y 3D.
Graphics PipelineBasado en PRISM.
Motor de media de alto rendimientoEl pipeline soporta la reproducción multimedia web en baja latencia. Está basado en Gstreamer.
Modelo de despliegue auto-contenidoPaquetes de aplicación auto-contenidos que incluyen todos los recursos de la aplicación y una copia privada de Java y JavaFX.

2.- Arquitectura de JavaFX

Listado de paquetes del API pública disponible:

Package Name (raíz: javafx.)Description
animationProporciona el conjunto de clases que son responsables de las transiciones basadas en animaciones.
applicationMétodos de ciclos de vida de la aplicación.
collectionsClases que gestionan colecciones y utilidades relacionadas.
concurrentConjunto de clases responsables de multitarea.
embed.swingClases que pueden ser usadas en código swing.
embed.swtClases que pueden ser usadas en código swt.
eventConjunto de clases para gestión de eventos.
fxmlConjunto de clase responsable de cargar la jerarquía de etiquetas.
geometryProporciona las clases que contienen los métodos para operar la geometría 2D en el objeto.
sceneClases para manejar el API scene graph.
scene.canvasConjunto de clases para manejar canvas.
scene.controlPorporciona las clases para todos los componentes de JavaFX.
scene.effectAplicación de efectos gráficos a los nodos de scene graph.
scene.imageCarga y dibujo de imagenes.
scene.inputGestión de eventos de ratón y teclado.
scene.layoutDisposición de la interfaz de usuario
scene.mediaIntegración de audio y video en la aplicación JavaFX.
scene.paintGestión de colores y gradientes para rellenar las formas y fondos cuando renderiza el scene graph.
scene.shapeClases para ejecutar las operaciones sobre objetos 2D.
scene.textClases para fuentes y nodos de texto.
scene.transformClases que son usadas para ejecutar rotación, escalado y recorte de objetos.
scene.webMecanismos para la carga y visualización de contenido web.
stageContenedor de alto nivel de clases para el contenido de JavaFX.
utilClases de utilidades.
util.converterConversores estándar de String.

2.1.- Secene Graph en JavaFX

Este es el punto de entrada para construir una aplicación JavaFX. Se trata de un árbol jerárquico de nodos que representa todos los elementos visuales de la interfaz de usuario. También cuenta con la capacidad de gestionar eventos.

Cada nodo tiene su propio id, estilo y volumen. Todas las clases están en el paquete javafx.scene y se utilizan para crear, modificar y aplicar transformaciones a nodos.

2.2.- Graphics Engine

El motor de gráficos ofrece soporte gráfico al Scene Graph. Soporta tanto gráficos 2D como 3D. Los dos pipelines de gráficos acelerados que incluye son PRISM y Quantum Tool Kit.

2.2.1.- PRISM

PRISM puede ser visto como un pipeline de alto rendimiento para gráficos acelerados por hardware. Puede renderizar tanto 2D como 3D. Implementa distintas maneras de renderizar en distintas plataformas:

  • DirectX en Windows.
  • OpenGL en Mac, Linux y embebido.
  • Java 2D cuando la aceleración hardware no es posible.

2.2.2.- Quantum Tool Kit

Envuelve Prism y Glas Windowing para hacerlos disponibles a las capas superiores de la pila.

2.3.- Glass windowing tool kit

Está presente en la capa más baja de la pila gráfica de JavaFX. Funciona como una interfaz entre JavaFX y el sistema operativo.

2.4.- Web View

Puedes embeber contenido HTML en un Scene graph de JavaFX. Web view utiliza el web kit que es un navegador interno para renderizar HTML5, DOM, CSS, SVG y Javascript.

2.5.- Media Engine

Mediante el media engine, una aplicación JavaFX soporta la reproducción de audio y video de ficheros multimedia. Media engine depende de un motor llamado GStreamer.

3.- Crea tu primera aplicación JavaFX

package ejemplo.aplicacion;   
import javafx.application.Application;  
import javafx.event.ActionEvent;  
import javafx.event.EventHandler;  
import javafx.scene.Scene;  
import javafx.scene.control.Button;  
import javafx.stage.Stage;  
import javafx.scene.layout.StackPane;  

public class EjemploJavaFX extends Application{  
  
    @Override  
    public void start(Stage stagePrimario) throws Exception {  

        Button boton=new Button("Di Hola");  

        boton.setOnAction(new EventHandler<ActionEvent>() {  
              
            @Override  
            public void handle(ActionEvent arg0) {  
                System.out.println("Hola Mundo");  
            }  
        });  
        StackPane root=new StackPane();  
        root.getChildren().add(boton);  
        Scene scene=new Scene(root,600,400);      
        stagePrimario.setTitle("Mi Primera Aplicación JavaFX");  
        stagePrimario.setScene(scene);  
        stagePrimario.show();  
    }  
    public static void main (String[] args)  
    {  
        launch(args);  
    }  
  
}  

Más recursos Java gratuitos

AsuntoDescripción
Tutorial básico y sintaxisTutorial básico Java y sintaxis. Aprende los fundamentos del lenguaje.
Hilos (Threads)Aprende a manejar hilos y las cuestiones básicas de la concurrencia
Funciones LambdaAquí te enseñamos las nociones más importantes para arrancas con funciones lambda
PalíndromosPrograma de ejemplo para el uso de palíndromos en Java.
Máquina Virtual de JavaTe explicamos el funcionamiento de la máquina virtual de java (Java Virtual Machine – JVM)
JDK, JRE y JVMDiferencias entre el JDK, JRE y JVM.
Mejores libros Java en EspañolHazte con los mejores libros Java para aprender paso a paso y profundizar en las mejores prácticas
TensorFlowManejo del API de TensorFlow para la construcción de grafos de operaciones y su ejecución
Tutorial Log4jTutorial para el manejo de Log4j, herramienta ágil y flexible para la gestión de Logs en Java
Java SecurityEntiende y aplica las posibilidades que da Java para mantener la seguridad
Tutorial JConsoleAprende los conceptos básicos de monitorización de procesos Java con JConsole
JavaFXTutorial de JavaFX, librería gráfica moderna para construcción de GUIs en móvil, escritorio y web.
Estructuras de datos en JavaExplicación y ejemplos de las estructuras de datos más importantes: listas, pila, cola, arbol.
JavaapiConjunto de clases, interfaces, métodos y paquetes que forman parte de la plataforma Java estándar
Algoritmo HuffmanMétodo eficiente para codificar datos, asignando códigos más cortos a los caracteres más frecuentes