Saltar al contenido

¿Puedo generar automáticamente clases de controlador desde FXML?

Recuerda que en las ciencias cualquier problema casi siempre tiene más de una soluciones, así que nosotros aquí te enseñaremos lo más óptimo y eficiente.

Solución:

Esto ahora es compatible con SceneBuilder, NetBeans y Eclipse. Tenga en cuenta que esto funciona de inmediato en NetBeans y SceneBuilder, pero en Eclipse primero necesita el complemento e(fx)clipse.

SceneBuilder: con un archivo FXML abierto en el editor, ingrese al menú para seleccionar “Ver” y “Mostrar esqueleto de controlador de muestra”.

Eclipse: abra el archivo fxml para que el contenido se muestre en el panel de edición de código (debería ver el fxml como xml de texto sin formato con resaltado de sintaxis dentro de Eclipse, no renderizado visualmente en SceneBuilder). Haga clic derecho en el código en Eclipse y seleccione “Código” y luego “Generar controlador”.

NetBeans: en NetBeans es aún más fácil, haga clic derecho en el archivo fxml en el explorador de proyectos y seleccione “Crear controlador”.

Actualización noviembre 2020

Esta respuesta ahora está desactualizada.

Como han señalado varias respuestas más recientes, ahora hay una variedad de herramientas diferentes adicionales disponibles para generar automáticamente clases de controlador FXML a partir de documentos FXML. Muchos de estos están destinados a ser extensiones, características o complementos de las herramientas de desarrollo existentes, como SceneBuilder, Idea, Eclipse o NetBeans.

Sugiero que los lectores interesados ​​revisen esta respuesta y otras respuestas a esta pregunta, luego miren su caso de uso individual y la cadena de conjunto de herramientas y elijan la solución que sea más apropiada para ellos de las opciones disponibles.


No hay nada que yo sepa que haga exactamente lo que propones en tu pregunta.

Es probable que esta respuesta termine bastante desactualizada con el tiempo.

Tecnologías alternativas

JRuby logra la mayoría de los beneficios descritos utilizando un enfoque ligeramente diferente: utiliza la magia de programación dinámica de jRuby para crear automáticamente miembros de la clase Ruby desde FXML dinámicamente en tiempo de ejecución.

Tom Schindl escribió una herramienta que genera código Java a partir de FXML. De los enfoques enumerados en esta respuesta, la herramienta de Tom parece más cercana a su pregunta.

Esqueletos de SceneBuilder

Un generador de código Java similar de FXML está disponible en SceneBuilder View | Show Sample Controller Skeleton característica, que se describe en esta publicación de blog. Cuando uso SceneBuilder, uso esta función todo el tiempo y trato de mantener mis controladores realmente livianos para que casi todos sean código generado automáticamente a partir de la función de esqueleto de SceneBuilder.

Sin embargo, es un poco molesto porque no logra una separación clara del código generado del código escrito a mano, por lo que debe tener cuidado cuando actualiza el FXML y desea generar un nuevo esqueleto y copiarlo y pegarlo sobre partes de su controlador existente (además de que es una operación manual ligeramente propensa a errores que requiere un poco de tiempo de desarrollador).

El código fuente de SceneBuilder está disponible si desea ver cómo funciona.

Posibles complementos de herramientas de compilación

Tal función de generación de código podría ser una valiosa adición a algunas de las herramientas de compilación existentes en el ecosistema JavaFX, como el complemento JavaFX Maven o el complemento JavaFX Gradle (o un complemento separado por derecho propio).

Desarrollo futuro

Creo que Oracle también está trabajando en una extensión de funciones para FXML para una futura versión de JavaFX (posterior a Java 8) que compila FXML directamente en el código de bytes de Java (archivos de clase), sin pasar por el paso del código fuente de Java. Este tipo de característica probablemente lograría la mayoría de los beneficios descritos.

Es posible con NetBeans versión 8.

Abra FXML, vaya a Fuente y haga clic en generar controlador.

Editar: ahora se puede hacer en cualquier IDE, Eclipse necesita un complemento pensado.

Si te ha resultado provechoso nuestro artículo, agradeceríamos que lo compartas con más desarrolladores así contrubuyes a difundir nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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