Saltar al contenido

IntelliJ, ¿es posible “Hacer controlador” como en NetBeans?

Solución:

En lugar de tener una acción para crear el controlador, IDEA usa intenciones (activar mediante Alt+Ingresar o ). Y su filosofía sería mantener el controlador sincronizado mientras edita el archivo FXML en lugar de volver a crearlo para actualizarlo con los cambios.

Por ejemplo, cuando crea un archivo FXML, IDEA ofrece crear el controlador:
ingrese la descripción de la imagen aquí

Primero lo nombro como desee, y luego uso una intención para crear la clase correspondiente:

ingrese la descripción de la imagen aquí

Luego, a medida que agrego cosas al FXML, IDEA ofrece crear los elementos correspondientes en el controlador:

ingrese la descripción de la imagen aquí

Similarmente con un fx:id:

ingrese la descripción de la imagen aquí

Y si uso el refactor de cambio de nombre para cambiar el fx:id

ingrese la descripción de la imagen aquí

cambia el nombre del campo correspondiente en el controlador para que coincida. Entonces, en lugar de editarlo y luego volver a crear el controlador para capturar el cambio de nombre, simplemente los mantiene sincronizados. Pero, de nuevo, la clave es utilizar la refactorización de cambio de nombre y no solo editar “manualmente” el fx:id.

Edite para responder preguntas de seguimiento en los comentarios

Primero un descargo de responsabilidad … Solo incursiono en JavaFX para escribir diálogos simples como interfaces para scripts de línea de comandos. Por lo tanto, de ninguna manera soy un experto y es posible que no conozca una función relacionada con JavaFX en IDEA. Pero he estado usando IDEA durante 14 años y, por lo general, sé qué buscar en términos de características y preguntas de “cómo lo hago”.

¿Puedes arrojar algo de luz sobre el uso de este tipo de cosas con Scene Builder, si sabes algo al respecto?

Siempre que utilizo un editor WYSIYWG como Scene Builder, todavía vigilo y limpio el código que genera. Todavía soy un poco de la vieja escuela en ese sentido. Y creo que IntelliJ IDEA se adhiere a esa filosofía.

Me resulta realmente difícil de creer que IDEA no tiene forma de ediciones de “actualización automática masiva” realizadas en Scene Builder.

Les puedo decir como IDE, IDEA no es grande en Wizards o generación masiva de código. En cambio, es de naturaleza más “quirúrgica”. Su filosofía de “código por intenciones” es ingresar / editar su intención, y luego usar una intención / solución rápida para implementar esa intención. Por lo tanto, cualquier generación de código que haga es pequeña y enfocada. Pero… en algunos casos, puede pedirle que aplique simultáneamente una intención a varios elementos abriendo el menú lateral de intenciones (usando la flecha derecha clave) y seleccionando “Reparar todo”nombre del problema“problemas en el archivo”. Nuevamente, dada mi limitada experiencia con el trabajo de JavaFx, es posible que no esté al tanto de algo. Pero no veo nada donde se encuentre tal cosa y no veo nada en las páginas de Ayuda.

Cuando comencé a usar IDEA en 2003, también me pregunté dónde estaban todos los asistentes y las funciones de generación de código masivo que proporcionaba mi antiguo IDE. (Anteriormente usé Forte para Java, el predecesor de NetBeans). Al principio los extrañaba. Luego comencé a usar intenciones y refactorizaciones para todo. Después de un par de meses, no extrañaba a los magos. Después de unos meses más, llegué a odiar a los magos en otros IDE. A la larga, fui mucho más productivo usando las intenciones y las refactorizaciones. Y me di cuenta de que ya no pasaba mucho tiempo lidiando con problemas de compilación y errores que hacía cuando usaba asistentes.

Si asigno fx: id a muchos botones y demás en Scene Builder, ¿tengo que ir manualmente a la vista de código del archivo fxml, encontrar todos los fx: id y para cada uno de ellos alt + enter para obtener ellos en el controlador?

Desafortunadamente, para la intención de “crear campo” para los ID que faltan “, no hay un modo por lotes disponible. Por lo tanto, no puede usar la opción” arreglar todo “. Mi conjetura fundamentada de por qué no es que al crear el campo se le da la oportunidad para seleccionar el tipo. Por ejemplo, con el fx:id para una etiqueta, es posible que desee escribir el campo como Label, Labeled, Control, etc. Concedido en la mayoría de los casos, es probable que lo escriba como el tipo real que es en su FXML. Por lo tanto, es posible que desee abrir una solicitud de función solicitando que un modo por lotes esté disponible para la intención “Crear campo” que predetermina el campo para escribir utilizado en el FXML. Sin embargo, si te acostumbras a usar F2 para navegar al siguiente error y luego usar Alt+Ingresar (o ) para abrir la solución rápida, verá que puede agregar los campos que faltan muy rápidamente.

si eliminé algunos fx: id’s también, entonces tendría que recordar cuáles eran, ¿eliminarlos manualmente en el controlador?

Nuevamente, en lugar de simplemente eliminar “manualmente” un fx:id, use una refactorización de IDEA. Al borrar fx:ids (o cualquier cosa) use la refactorización “Safe Delete”. Con el cursor en la identificación (ya sea en el archivo FXML o en el controlador), escriba Alt+Borrar (o ) para iniciar “Eliminación segura”.

ingrese la descripción de la imagen aquí

Si no hay usos, el campo se elimina. De lo contrario, recibe una advertencia:

ingrese la descripción de la imagen aquí

Haga clic en el botón “Ver usos”. La barra de herramientas “Buscar” se abrirá mostrando los usos.

ingrese la descripción de la imagen aquí

Actualice su código para eliminar sus usos. Utilice el botón “Volver a ejecutar la eliminación segura” para controlar su progreso. Una vez que se hayan realizado todos los usos, presione el botón “Refactorizar” para eliminar los usos. Si bien esto puede parecer más complicado que algún tipo de regeneración de la opción del controlador, mi pregunta sería ¿cómo trataría dicha característica el uso de ese campo en un método dentro del controlador? ¿No volvería a crear el campo dejando un error de compilación en mi controlador? ¿Cómo “regeneraría” toda la personalización que hice al controlador?

Safe Delete también mantiene su código libre de errores. Si tuviera un dólar por cada vez que fui a eliminar algo que sabía absolutamente que no se estaba usando en ningún lugar solo para la refactorización de eliminación segura para mostrar una advertencia sobre el lugar en el que se usa, que me olvidé por completo.

Si usa la solución de Javaru, los campos creados serán públicos y sin anotaciones @FXML.

Para cambiarlo vaya a: Archivo | Configuraciones | Editor | Estilo de código | Java | Generación de código | Visibilidad predeterminada: elija Escalar o Privado y marque “usar anotaciones externas” en la parte inferior.

Segunda solución: abra el archivo fxml en el generador de escenas, configure la clase del controlador en la sección del controlador en la parte inferior izquierda de la ventana. Ir a: ver | muestre el esqueleto del controlador de muestra y copie el código de clase del controlador.

Es mi primera publicación, espero haber ayudado. 🙂

¡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 *