Red de conocimiento informático - Material del sitio web - Cómo asociar un archivo fxml con un controlador de eventos escrito en código Java

Cómo asociar un archivo fxml con un controlador de eventos escrito en código Java

Ahora cree un controlador para administrar los eventos de los botones. Este ejemplo demuestra cómo asociar FXML con un controlador de eventos escrito en código Java.

En la ventana del proyecto, haga clic derecho en Sample.java y seleccione Refactor--Rename.

Ingrese a FXMLExampleController y haga clic en Refactorizar.

Abra FXMLExampleController.java, elimine el código y reemplace el Ejemplo con el siguiente contenido

9.

Ejemplo 9

FXMLExampleController. java

paquete fxmlexample;

importar javafx.event.Label;

clase pública FXMLExampleController {

@FXML etiqueta privada botónStatusText;

@FXML protected void handleSubmitButtonAction(evento ActionEvent) {

buttonStatusText.setText("Botón Enviar presionado");

}

@ Mango vacío protegido FXMLPasswordFieldAction(evento ActionEvent) {

buttonStatusText.setText("Tecla Intro presionada");

}

}

Las anotaciones @FXML se utilizan para identificar métodos y miembros de controladores no públicos.

Además de Java, los controladores también se pueden implementar utilizando otros lenguajes compilados como Scala. .

Ya está listo para ejecutarse. Escriba su contenido y haga clic en Enviar para probarlo.

Para obtener el código completo, descargue FXMLExample.zip.

Usar un lenguaje de scripting

Además de usar Java para crear el controlador, puede usar cualquier lenguaje que proporcione un motor de scripting compilable JSR223. Por ejemplo, JavaScript,

Groovy, Jython y Clojure.

En el archivo fxml_example.fxml, agregue la declaración JavaScript después de la declaración XML.

En la etiqueta Botón, cambie el nombre del método

:

onAction="handleSubmitButtonAction(event ) ;"

Actualizar etiqueta PasswordField:

onAction="handlePasswordFieldAction(event);"

Elimina fx:controller de la etiqueta BorderPane y agrégalo en

p>

Agregue js al método

10.

Ejemplo 10 JavaScript en FXML

Función

handleSubmitButtonAction() {

buttonStatusText.setText("Llamar a JavaScript");

}

función handlePasswordFieldAction(evento) {

buttonStatusText.text = "Más JavaScript";

}

Por supuesto, también puedes escribir métodos js en archivos externos ( fxml_example.js) y luego haga referencia a él de esta manera:

Es posible que el uso de scripts para escribir FXML no le permita ingresar el Cuerpo de la función durante la depuración.

Usar hojas de estilo

Al usar estilos en línea, también puede agregar una hoja de estilo y luego establecer la asociación para el nodo. La siguiente hoja de estilos se crea para definir los estilos para el diseño de la cuadrícula y los controles de etiquetas.

Crea una hoja de estilo.

En la ventana del proyecto, haga clic derecho en la carpeta fxmlexample y seleccione Nuevo - Otro.

En el cuadro de diálogo Nuevo archivo, seleccione Otro - Hojas de estilo en cascada y luego seleccione Siguiente.

Ingrese fxmlstylesheet y haga clic en Finalizar.

Reemplace el código con el siguiente ejemplo

11.

Contenido del ejemplo 11 Estilo

Hoja

@charset "utf-8";

/*

Documento: FXMLstylesheet.css

*/

.grid.-pane {

-fx-padding: 80 0 0 0;

}

.label {

-fx-font: normal 36px Tahoma;

}

Abra FXMLExample.java y coloque Las hojas de estilo se agregan al front-end con el siguiente código: tage.show() .scene.getStylesheets().add("fxmlexample/fxmlstylesheet.css");

Abra fxml_example.fxml y agregue la clase de hoja de estilo.

Agrega una declaración de importación para el elemento .

Reemplace el ejemplo de GridPane con el siguiente código

12.

Ejemplo 12 Clase de estilo de cuadrícula para

Pane

Reemplace la etiqueta "Iniciar sesión" con el siguiente código.

Ejemplo

13 .

Ejemplo 13 Clase de estilo para

Label

GridPane.columnIndex="0" GridPane.rowIndex="0">

Cuando se usa la etiqueta

, el estilo se aplicará a menos que tenga su propio estilo en línea. para todas las categorías. Por lo tanto, los cambios en el Ejemplo

13 se aplicarán no solo a la etiqueta Iniciar sesión

, sino también a las etiquetas Nombre de usuario y Contraseña. Pero no se aplicará a la etiqueta de ejemplo de inicio de sesión porque tiene su propio estilo en línea que anula otros estilos.