📌 Fundamento Profundo de JavaFX
JavaFX es un framework para la construcción de interfaces gráficas (GUI) en Java, diseñado
para reemplazar Swing y proporcionar una alternativa más moderna, flexible y potente.
A continuación, te proporcionaré un fundamento profundo de JavaFX, incluyendo su
arquitectura, ciclo de vida, componentes clave y mejores prácticas.
1️⃣ ¿Qué es JavaFX y por qué usarlo?
JavaFX es un framework basado en Java para la creación de aplicaciones de escritorio, web
embebido y móviles con una interfaz gráfica rica e interactiva.
✅ Características principales:
✔️Interfaz basada en escenas con el patrón Scene Graph.
✔️FXML para separación de lógica y diseño.
✔️Soporte para CSS en la personalización de estilos.
✔️API para gráficos, animaciones y multimedia.
✔️Soporte para binding de datos y programación reactiva.
2️⃣ Arquitectura de JavaFX
🔹 Componentes principales
JavaFX se basa en la arquitectura Scene Graph, compuesta por varios elementos clave:
1. Application → La clase principal que inicia la aplicación.
2. Stage (Escenario) → La ventana principal de la aplicación.
3. Scene (Escena) → Contenedor principal que contiene los nodos gráficos.
4. Nodos (Nodes) → Los componentes gráficos como botones, etiquetas, paneles, etc.
5. Event Handling → Sistema de eventos y acciones.
6. CSS y FXML → Definición de estilos y estructura de la interfaz.
📌 Ejemplo de estructura básica de JavaFX
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
Button btn = new Button("Haz clic");
[Link](e -> [Link]("¡Botón presionado!"));
StackPane root = new StackPane();
[Link]().add(btn);
Scene scene = new Scene(root, 300, 200);
[Link](scene);
[Link]("Hola JavaFX");
[Link]();
public static void main(String[] args) {
launch(args);
✅ Explicación:
Application: Punto de entrada de la aplicación.
Stage: Ventana principal de la aplicación.
Scene: Contiene la estructura de la UI.
StackPane: Un layout para centrar el botón.
Button: Componente interactivo.
3️⃣ Ciclo de Vida de una Aplicación JavaFX
Una aplicación JavaFX sigue el siguiente ciclo de vida:
1️⃣ Inicialización (init())
Se ejecuta antes de que la UI se cree.
Se usa para cargar recursos, datos o inicializar estados.
2️⃣ Ejecución (start(Stage primaryStage))
Aquí se define la interfaz gráfica y la lógica de la aplicación.
3️⃣ Finalización (stop())
Se ejecuta cuando la aplicación se cierra.
Se usa para liberar recursos, cerrar conexiones, guardar estados.
📌 Ejemplo del ciclo de vida
@Override
public void init() {
[Link]("Inicializando...");
@Override
public void stop() {
[Link]("Finalizando...");
4️⃣ Uso de FXML para Separación de Diseño y Lógica
FXML es un lenguaje basado en XML que permite definir la UI separadamente del código Java.
📌 Ejemplo de archivo [Link]
<?xml version="1.0" encoding="UTF-8"?>
<?import [Link]?>
<?import [Link]?>
<AnchorPane xmlns="[Link]
xmlns:fx="[Link]
fx:controller="[Link]">
<Button text="Haz clic" onAction="#manejarBoton"/>
</AnchorPane>
📌 Controlador [Link]
import [Link];
import [Link];
public class MainController {
@FXML
private Button miBoton;
@FXML
private void manejarBoton() {
[Link]("Botón presionado desde FXML");
✅ Ventajas de FXML:
✔️Separa la vista de la lógica.
✔️Facilita el mantenimiento y reusabilidad.
✔️Compatible con Scene Builder (editor visual para FXML).
5️⃣ Layouts en JavaFX
Los layouts permiten organizar los componentes gráficos dentro de la interfaz.
Layout Descripción
VBox Organiza nodos en columna vertical.
HBox Organiza nodos en fila horizontal.
GridPane Diseño basado en cuadrículas (filas y columnas).
BorderPane Divide en cinco áreas (arriba, abajo, centro, izquierda, derecha).
StackPane Superpone nodos en capas.
AnchorPane Permite posicionamiento absoluto.
📌 Ejemplo: Uso de VBox
VBox vbox = new VBox();
[Link]().addAll(new Button("Botón 1"), new Button("Botón 2"));
6️⃣ CSS en JavaFX
JavaFX permite aplicar CSS para personalizar la apariencia de la UI.
📌 Ejemplo de CSS ([Link])
.button {
-fx-background-color: #3498db;
-fx-text-fill: white;
-fx-font-size: 14px;
📌 Aplicando CSS en JavaFX
[Link]().add(getClass().getResource("[Link]").toExternalForm());
7️⃣ Binding y Programación Reactiva
JavaFX tiene un poderoso sistema de binding, que permite que los cambios en una variable se
reflejen automáticamente en la UI.
📌 Ejemplo de SimpleStringProperty
StringProperty texto = new SimpleStringProperty("Hola");
[Link]((obs, oldValue, newValue) -> [Link]("Nuevo valor: " +
newValue));
[Link]("Nuevo Texto"); // Imprime: Nuevo valor: Nuevo Texto
📌 Ejemplo de binding con un Label
Label label = new Label();
TextField textField = new TextField();
[Link]().bind([Link]());
✅ Ventajas del Binding:
✔️Evita actualizaciones manuales.
✔️Facilita la programación reactiva.
8️⃣ Manejo de Eventos en JavaFX
Los eventos permiten interactuar con los componentes de la UI.
📌 Ejemplo de evento con Button
Button btn = new Button("Click me");
[Link](e -> [Link]("¡Botón presionado!"));
📌 Ejemplo con EventHandler
[Link](new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
[Link]("Botón clickeado");
});
📌 Conclusión
JavaFX es un framework moderno, potente y flexible para el desarrollo de aplicaciones de
escritorio en Java. Con su arquitectura basada en Scene Graph, uso de FXML, CSS, binding y
eventos, permite desarrollar interfaces gráficas avanzadas y escalables.
🚀 ¿Tienes dudas o necesitas ayuda en un caso específico?