¿Cómo agregar una librería en IntelliJ?

¿Cómo Ejecutar tu Primera Aplicación JavaFX?

17/04/2026

Valoración: 4.5 (5152 votos)

En el vasto universo del desarrollo de software, JavaFX se ha consolidado como una potente herramienta para la creación de interfaces de usuario enriquecidas y dinámicas. Si bien el camino para ejecutar tu primera aplicación puede parecer desafiante al inicio, con la guía adecuada, verás que es un proceso lógico y gratificante. Este artículo te sumergirá en los fundamentos, desde la preparación de tu entorno hasta la estructuración de tu código y el diseño visual, asegurando que tu proyecto JavaFX no solo funcione, sino que lo haga de manera eficiente y escalable.

¿Cómo ejecutar una aplicación JavaFX?
Llama a esta clase MainApp y ponla en el paquete de controladores ch.makery.address (nota: este es el paquete padre de los paquetes view y model). La clase generada (MainApp.java) extiende a la clase Application y contiene dos métodos. Esta es la estructura básica que necesitamos para ejecutar una Aplicación JavaFX.
Índice de Contenido

¿Por Qué Elegir JavaFX? Una Visión General

Antes de sumergirnos en los detalles técnicos, es fundamental comprender qué es JavaFX y por qué es una elección popular para el desarrollo de aplicaciones de escritorio. JavaFX es un conjunto de herramientas gráficas y multimedia de código abierto para Java, diseñado para reemplazar a Swing como la plataforma estándar para aplicaciones de interfaz de usuario ricas (RIA) en Java. Ofrece una API moderna, un rendimiento gráfico acelerado por hardware y la capacidad de crear aplicaciones con un aspecto y una sensación contemporáneos. Su integración con herramientas como Scene Builder facilita enormemente el diseño visual, permitiendo una separación clara entre la lógica de negocio y la presentación.

Además de sus capacidades visuales, JavaFX promueve buenas prácticas de desarrollo, como la modularidad y la reusabilidad del código, aspectos que exploraremos a fondo a través de la implementación del patrón Modelo-Vista-Controlador (MVC).

Preparando el Entorno: Requisitos Indispensables

Para comenzar a desarrollar con JavaFX, necesitarás configurar tu entorno de desarrollo con las herramientas adecuadas. Una preparación meticulosa de esta etapa te ahorrará muchos dolores de cabeza en el futuro. Asegúrate de contar con los siguientes elementos:

  • Java JDK 8 (con JavaFX 8 incluido): Es la base de nuestro desarrollo. Asegúrate de instalar la versión completa del JDK, ya que incluye las bibliotecas de JavaFX necesarias.
  • Eclipse 4.3 o superior con el plugin e(fx)clipse: Eclipse es nuestro IDE principal. El plugin e(fx)clipse es crucial, ya que proporciona las herramientas y plantillas específicas para proyectos JavaFX. La forma más sencilla de obtenerlo es descargar la distribución preconfigurada desde el sitio web de e(fx)clipse. Alternativamente, puedes instalarlo como un sitio de actualización en tu instalación existente de Eclipse.
  • Scene Builder 2.0 o superior: Esta herramienta visual es indispensable para diseñar tus interfaces de usuario de forma intuitiva, sin necesidad de escribir directamente el código FXML.

Configuración de Eclipse para JavaFX

Una vez que tengas todos los componentes descargados e instalados, es vital configurar Eclipse para que reconozca y utilice correctamente el JDK 8 y el Scene Builder. Sigue estos pasos cuidadosamente:

  1. Indicar a Eclipse dónde está el JDK 8:
    • Abre las Preferencias de Eclipse (menú Window | Preferences).
    • Navega hasta Java | Installed JREs.
    • Si no ves jre1.8 en la lista, haz clic en Add…, selecciona Standard VM y elige el Directorio de instalación (JRE Home directory) de tu JDK 8.
    • Es recomendable eliminar otros JREs o JDKs de la lista para asegurarte de que JDK 8 sea la opción por defecto.
  2. Configurar el Nivel de Cumplimiento del Compilador:
    • Dentro de las Preferencias de Eclipse, navega a Java | Compiler.
    • Establece el nivel de cumplimiento del compilador (Compiler compliance level) en 1.8.
  3. Especificar la Ruta de Scene Builder:
    • Navega a Java | JavaFX en las Preferencias.
    • Especifica la ruta completa al ejecutable de Scene Builder en el campo correspondiente. Esto permitirá a Eclipse abrir archivos FXML directamente con Scene Builder.

La Estructura de un Proyecto JavaFX: MVC en Acción

Un buen diseño de software es la base de aplicaciones robustas y fáciles de mantener. Para nuestra aplicación JavaFX, adoptaremos el patrón Modelo-Vista-Controlador (MVC). Este patrón arquitectónico promueve la separación de las responsabilidades de una aplicación en tres componentes principales:

  • Modelo (Model): Representa los datos y la lógica de negocio. Es independiente de la interfaz de usuario.
  • Vista (View): Es la interfaz de usuario, lo que el usuario ve e interactúa. Es responsable de mostrar los datos del Modelo.
  • Controlador (Controller): Actúa como intermediario entre el Modelo y la Vista. Maneja las interacciones del usuario, actualiza el Modelo y la Vista según sea necesario.

Esta separación no solo mejora la organización del código, sino que también facilita las pruebas y el mantenimiento.

Creando tu Primer Proyecto JavaFX

  1. En Eclipse (con e(fx)clipse instalado), ve a File | New | Other….
  2. En el diálogo, elige JavaFX Project y haz clic en Next.
  3. Especifica el nombre del proyecto (por ejemplo, AddressApp) y haz clic en Finish.
  4. Si Eclipse crea automáticamente un paquete application y su contenido, bórralo, ya que crearemos nuestra propia estructura de paquetes basada en MVC.

Organizando el Código: Creación de Paquetes

Para implementar el patrón MVC, crearemos tres paquetes separados dentro de la carpeta src de nuestro proyecto:

  • Haz clic derecho en la carpeta src de tu proyecto, selecciona New | Package.
  • Crea los siguientes paquetes:
    • ch.makery.address: Contendrá la clase principal de la aplicación y controladores globales.
    • ch.makery.address.model: Aquí irán las clases que representen nuestros datos (el Modelo).
    • ch.makery.address.view: Este paquete albergará los archivos FXML (las Vistas) y sus controladores asociados (controladores-vista).

Esta estructura garantiza que cada parte de tu aplicación tenga su lugar definido, facilitando la navegación y el entendimiento del código.

Diseñando la Interfaz de Usuario con Scene Builder

La interfaz de usuario en JavaFX puede ser construida de dos maneras principales: programáticamente en Java o mediante archivos XML (conocidos como FXML). Aunque ambas son válidas, el uso de FXML, en conjunto con Scene Builder, ofrece una ventaja significativa al separar claramente el diseño de la lógica. Esto se alinea perfectamente con el principio de la Vista en MVC.

CaracterísticaFXMLCódigo Java
SeparaciónClara separación de vista y lógicaVista y lógica entrelazadas
LegibilidadXML declarativo, fácil de entenderRequiere comprensión de la lógica Java
HerramientasCompatible con Scene BuilderRequiere programación manual
MantenimientoMás sencillo para cambios de diseñoPuede ser complejo para interfaces grandes

Creando el Archivo FXML de Diseño (PersonOverview.fxml)

  1. Haz clic derecho en el paquete ch.makery.address.view.
  2. Selecciona New | Other | FXML | New FXML Document.
  3. Nombra el archivo PersonOverview y haz clic en Finish.

Diseño Visual Paso a Paso con Scene Builder

Ahora, es el momento de usar la potencia de Scene Builder para construir nuestra interfaz de usuario. Este será un panel de descripción general de personas:

  1. Abre el FXML con Scene Builder: Haz clic derecho sobre PersonOverview.fxml y elige Open with Scene Builder. Deberías ver Scene Builder abierto con un AnchorPane visible en la jerarquía de componentes (herramienta Hierarchy, a la izquierda).
  2. Ajusta el tamaño del AnchorPane: Selecciona el AnchorPane en la jerarquía y, en el apartado Layout (a la derecha), ajusta sus propiedades de tamaño (por ejemplo, Pref Width y Pref Height a un valor inicial, aunque luego lo haremos adaptable).
  3. Añade un SplitPane: Arrastra un SplitPane (Horizontal Flow) desde la librería (Library) al área principal de edición. Este componente nos permitirá dividir la ventana en dos secciones redimensionables. Haz clic derecho sobre el SplitPane en la jerarquía y elige Fit to Parent para que ocupe todo el espacio del AnchorPane.
  4. Incorpora una TableView: Arrastra un TableView (ubicado bajo Controls en la librería) al lado izquierdo del SplitPane. Esta tabla mostrará una lista de personas. Selecciona la TableView (no una sola columna) y establece las siguientes restricciones de apariencia (Layout) para la TableView. Dentro de un AnchorPane (o un componente que lo contenga, como el SplitPane en este caso), siempre se pueden establecer anclajes (anchors) para los cuatro bordes (superior, inferior, izquierdo, derecho). Esto asegura que la tabla se redimensione automáticamente con la ventana.
  5. Verifica el redimensionamiento: Ve al menú Preview | Show Preview in Window para comprobar si se visualiza correctamente. Intenta cambiar el tamaño de la ventana. La TableView debería ajustar su tamaño al tamaño de la ventana, ya que está “anclada” a sus bordes.
  6. Configura las columnas de la tabla: Cambia el texto de las columnas de la TableView (bajo Properties, selecciona cada columna y edita Text) a “First Name” y “Last Name”.
  7. Ajusta la política de redimensionamiento de columnas: Selecciona la TableView y elige constrained-resize para la Column Resize Policy (en Properties). Esto asegura que las columnas utilizarán siempre todo el espacio disponible dentro de la tabla.
  8. Añade una Label para detalles: Arrastra una Label al lado derecho del SplitPane con el texto “Person Details”. Ajusta su apariencia usando anclajes para posicionarla correctamente en la parte superior derecha.
  9. Incorpora un GridPane para los detalles: Añade un GridPane debajo de la Label “Person Details”. Selecciónalo y ajusta su apariencia usando anclajes (superior, derecho e izquierdo) para que se posicione adecuadamente y se redimensione con la ventana.
  10. Añade etiquetas al GridPane: Dentro del GridPane, añade las siguientes etiquetas (Label) a las celdas, creando filas según sea necesario (para añadir una fila, selecciona un número de fila existente - se volverá de color amarillo -, haz clic derecho sobre el número de fila y elige “Add Row”):
    • First Name:
    • Last Name:
    • Street:
    • City:
    • Postal Code:
    • Birthday:
  11. Añade botones de acción: Añade 3 botones en la parte inferior derecha del panel de detalles. Un truco útil es seleccionarlos todos (manteniendo Ctrl o Cmd y haciendo clic), hacer clic derecho e invocar Wrap In | HBox. Esto los agrupará horizontalmente. Podrías necesitar establecer un espaciado (spacing) dentro del HBox en sus propiedades. Después, establece también anclajes (derecho e inferior) para que los botones se mantengan en el lugar correcto al redimensionar la ventana.

Una vez completados estos pasos, tu diseño debería parecerse a una vista de contactos con una lista a la izquierda y detalles a la derecha. Usa el menú Preview de Scene Builder para comprobar su comportamiento al cambiar el tamaño de la ventana.

La Clase Principal: El Corazón de tu Aplicación JavaFX

Toda aplicación JavaFX necesita una clase principal que sirva como punto de entrada. Esta clase se encargará de inicializar la ventana principal (el Stage) y de cargar las vistas FXML que hemos diseñado.

Creando la Vista Raíz (RootLayout.fxml)

Necesitamos un archivo FXML adicional para nuestra vista raíz. Esta vista actuará como el contenedor principal de nuestra aplicación, donde se anidarán otras vistas (como PersonOverview.fxml). Típicamente, contendrá elementos como una barra de menú.

  1. Crea otro archivo FXML dentro del paquete ch.makery.address.view.
  2. Nómbralo RootLayout.fxml.
  3. Esta vez, elige BorderPane como elemento raíz. Un BorderPane es ideal para diseños de aplicaciones, ya que permite colocar elementos en las regiones superior, inferior, izquierda, derecha y central.
  4. Abre RootLayout.fxml en Scene Builder. Cambia el tamaño del BorderPane con la propiedad Pref Width establecida en 600 y Pref Height en 400.
  5. Añade una MenuBar en la ranura superior del BorderPane (Top). Por ahora, no implementaremos la funcionalidad del menú, solo su presencia.

La Clase MainApp.java: Punto de Entrada de la Aplicación

La clase principal de JavaFX extiende la clase javafx.application.Application y es el punto de partida de nuestra aplicación. Contiene el método start(Stage primaryStage), que es invocado automáticamente cuando la aplicación se lanza desde el método main.

Para entender la estructura de una aplicación JavaFX, piensa en una obra de teatro:

  • El Stage (escenario): Es el contenedor principal, normalmente la ventana de la aplicación con sus bordes, botones de maximizar, minimizar y cerrar.
  • La Scene (escena): Dentro del Stage, puedes añadir una Scene. Una Scene contiene todos los nodos gráficos (botones, etiquetas, tablas, etc.) que componen la interfaz de usuario. Puedes cambiar dinámicamente una Scene por otra dentro del mismo Stage.
  • Los Nodes (nodos): Son los componentes individuales de la interfaz de usuario que se añaden a una Scene, como AnchorPane, TextBox, Button, etc.

Para crear nuestra clase principal:

  1. Haz clic derecho en el proyecto y elige New | Other | JavaFX | classes | JavaFX Main Class.
  2. Llama a esta clase MainApp y colócala en el paquete de controladores ch.makery.address (nota: este es el paquete padre de los paquetes view y model).
  3. Reemplaza el código generado en MainApp.java con el siguiente:
    package ch.makery.address; import java.io.IOException; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.BorderPane; import javafx.stage.Stage; public class MainApp extends Application { private Stage primaryStage; private BorderPane rootLayout; @Override public void start(Stage primaryStage) { this.primaryStage = primaryStage; this.primaryStage.setTitle("AddressApp"); initRootLayout(); showPersonOverview(); } / * Initializes the root layout. */ public void initRootLayout() { try { // Load root layout from fxml file. FXMLLoader loader = new FXMLLoader(); loader.setLocation(MainApp.class.getResource("view/RootLayout.fxml")); rootLayout = (BorderPane) loader.load(); // Show the scene containing the root layout. Scene scene = new Scene(rootLayout); primaryStage.setScene(scene); primaryStage.show(); } catch (IOException e) { e.printStackTrace(); } } / * Shows the person overview inside the root layout. */ public void showPersonOverview() { try { // Load person overview. FXMLLoader loader = new FXMLLoader(); loader.setLocation(MainApp.class.getResource("view/PersonOverview.fxml")); AnchorPane personOverview = (AnchorPane) loader.load(); // Set person overview into the center of root layout. rootLayout.setCenter(personOverview); } catch (IOException e) { e.printStackTrace(); } } / * Returns the main stage. * @return */ public Stage getPrimaryStage() { return primaryStage; } public static void main(String[] args) { launch(args); } } 

    Analicemos las partes clave de este código:

    • start(Stage primaryStage): Este es el método principal que se ejecuta al iniciar la aplicación. Recibe el primaryStage (la ventana principal) y establece su título. Luego, llama a initRootLayout() y showPersonOverview().
    • initRootLayout(): Este método carga el archivo RootLayout.fxml utilizando un FXMLLoader. El FXMLLoader es esencial para cargar archivos FXML y construir el grafo de escena correspondiente. Una vez cargado, crea una nueva Scene con el rootLayout y la establece en el primaryStage, haciéndola visible.
    • showPersonOverview(): Similar a initRootLayout(), este método carga el PersonOverview.fxml. Una vez cargado, lo inserta en el centro de nuestro rootLayout (el BorderPane), integrando así nuestra vista de detalles de personas en la ventana principal.
    • getPrimaryStage(): Un método de utilidad para obtener una referencia al Stage principal, útil para otras partes de la aplicación.
    • main(String[] args): El punto de entrada estándar de Java, que simplemente llama a launch(args), el método de JavaFX que inicializa la aplicación y llama al start().

    Si ejecutas la aplicación ahora (clic derecho en MainApp.java, Run As | Java Application), deberías ver la ventana de la aplicación con la barra de menú en la parte superior y el diseño de la tabla de personas y sus detalles en el centro.

    Ejecución y Solución de Problemas Comunes

    Una vez que hayas configurado todo y escrito el código, ejecutar tu aplicación JavaFX es sencillo. Desde Eclipse, haz clic derecho en el archivo MainApp.java, selecciona Run As y luego Java Application. Tu aplicación debería iniciarse en una nueva ventana.

    Problemas Frecuentes y Sus Soluciones

    Es común encontrarse con algunos problemas al principio. Aquí te presentamos uno de los más habituales:

    • Error: java.lang.IllegalStateException: Location is not set.
      Este error indica que JavaFX no puede encontrar un archivo FXML en la ubicación especificada. Las causas más comunes son:
      • Nombre del archivo FXML mal escrito: Revisa cuidadosamente que los nombres de tus archivos .fxml (por ejemplo, RootLayout.fxml, PersonOverview.fxml) coincidan exactamente con los nombres utilizados en el código (MainApp.class.getResource("view/RootLayout.fxml")). Recuerda que Java es sensible a mayúsculas y minúsculas.
      • Ruta incorrecta del archivo FXML: Asegúrate de que la ruta dentro de getResource() sea correcta con respecto a la ubicación de tu clase MainApp. En nuestro caso, los archivos FXML están en el paquete view, que es un subpaquete del paquete de MainApp, por lo que la ruta "view/RootLayout.fxml" es apropiada.
      • Problemas de construcción del proyecto: A veces, Eclipse puede tener problemas con la construcción. Intenta limpiar y reconstruir tu proyecto (Project | Clean… y luego Project | Build Project).

    Si a pesar de revisar estos puntos, la aplicación sigue sin funcionar, a menudo es útil comparar tu código con una versión de trabajo o buscar el error específico en foros de desarrollo.

    Preguntas Frecuentes (FAQ)

    A continuación, respondemos algunas de las preguntas más comunes que surgen al empezar con JavaFX:

    ¿Qué es JavaFX y en qué se diferencia de Swing?

    JavaFX es la plataforma moderna de Java para construir aplicaciones de interfaz gráfica de usuario (GUI), diseñada para reemplazar a Swing. Mientras que Swing es una tecnología más antigua basada en AWT con un aspecto más tradicional, JavaFX ofrece una API más intuitiva, renderizado acelerado por hardware (lo que resulta en interfaces más fluidas y atractivas), soporte para CSS para estilos y una mejor integración con herramientas de diseño visual como Scene Builder. Es la opción preferida para nuevas aplicaciones de escritorio en Java.

    ¿Por qué usar FXML en lugar de programar la interfaz directamente en Java?

    Aunque es posible construir interfaces de usuario completamente en código Java, FXML ofrece varias ventajas. Principalmente, permite una clara separación entre la lógica de negocio (en Java) y la definición de la interfaz de usuario (en XML). Esto hace que el diseño sea más legible, fácil de mantener y, crucialmente, permite a los diseñadores gráficos o desarrolladores de UI trabajar en la interfaz usando herramientas visuales como Scene Builder sin tener que tocar el código Java. Facilita la colaboración y acelera el proceso de diseño.

    ¿Qué es el patrón MVC y por qué es importante en JavaFX?

    El patrón Modelo-Vista-Controlador (MVC) es una arquitectura de diseño de software que separa una aplicación en tres componentes interconectados: el Modelo (datos y lógica de negocio), la Vista (la interfaz de usuario) y el Controlador (maneja la interacción del usuario y actualiza el Modelo y la Vista). En JavaFX, MVC es importante porque:

    • Mejora la modularidad: Cada componente tiene una responsabilidad única.
    • Facilita el mantenimiento: Los cambios en una parte (ej. el diseño de la UI) no requieren cambios extensos en otras partes (ej. la lógica de negocio).
    • Promueve la reusabilidad: Los componentes del Modelo pueden ser reutilizados en diferentes Vistas o aplicaciones.
    • Mejora la capacidad de prueba: La lógica de negocio (Modelo) puede probarse independientemente de la interfaz de usuario.

    ¿Qué son Stage, Scene y Node en JavaFX?

    Estos son los pilares de la jerarquía visual en JavaFX:

    • Stage: Es la ventana principal de la aplicación. Representa el contenedor de nivel superior y puede tener una o más Scenes asociadas a ella a lo largo del tiempo.
    • Scene: Contiene todo el contenido visual de una parte específica de la interfaz de usuario. Una Scene se establece dentro de un Stage. Si cambias la Scene de un Stage, toda la interfaz visible dentro de esa ventana cambiará.
    • Node: Es cualquier elemento visual que puedes añadir a una Scene. Esto incluye controles de UI como botones, etiquetas, tablas, campos de texto, pero también contenedores de diseño como AnchorPane, BorderPane, HBox, etc. Los Nodes forman un 'grafo de escena' jerárquico que define la estructura visual de tu aplicación.

    ¿Qué hago si Scene Builder no se abre o no funciona correctamente?

    Si Scene Builder no se abre al hacer clic derecho en un archivo FXML, verifica lo siguiente:

    • Ruta de Scene Builder en Eclipse: Asegúrate de que la ruta al ejecutable de Scene Builder esté correctamente configurada en Window | Preferences | Java | JavaFX.
    • Versión de Scene Builder: Asegúrate de que tienes una versión compatible (2.0 o superior).
    • Instalación de Scene Builder: Reinstala Scene Builder si sospechas que la instalación está corrupta.
    • Archivos FXML válidos: Asegúrate de que el archivo FXML no tenga errores de sintaxis que impidan a Scene Builder parsearlo.

    Conclusión

    Felicidades, has dado los primeros pasos sólidos en el mundo del desarrollo de aplicaciones con JavaFX. Hemos cubierto desde la configuración de tu entorno de desarrollo, la comprensión del patrón MVC, el diseño visual con Scene Builder** y la implementación de la clase principal que da vida a tu aplicación. La habilidad de ejecutar tu primera aplicación es un hito importante que te abre las puertas a un sinfín de posibilidades para crear interfaces de usuario ricas y funcionales. Este es solo el principio de tu viaje con JavaFX. Con esta base sólida, estás listo para añadir más funcionalidad y datos a tu aplicación, explorando las capacidades completas de esta poderosa herramienta.

Si quieres conocer otros artículos parecidos a ¿Cómo Ejecutar tu Primera Aplicación JavaFX? puedes visitar la categoría Librerías.

Subir