Javafx: cómo utilizar los eventos de propiedad

propiedades JavaFX proporcionan una addListener método que le permite agregar controladores de eventos que se llaman cada vez que el valor de una propiedad cambia. Se pueden crear dos tipos de controladores de eventos de la propiedad:

  • UN cambio oyente, que se llama cada vez que el valor de la propiedad se ha recalculado. El cambio oyente se pasa tres argumentos: la propiedad cuyo valor ha cambiado, el valor anterior de la propiedad, y el nuevo valor.

  • Un oyente invalidación, que se llama cada vez que se vuelve desconoce el valor de la propiedad. Este evento se genera cuando el valor de la propiedad tiene que ser recalculado, pero aún no se ha vuelto a calcular. Un detector de eventos invalidación se pasa un solo argumento: el propio objeto de propiedad.

El cambio y la invalidación de los oyentes se definen por interfaces funcionales con nombre ChangeListener y InvalidationListener. Debido a que estas interfaces son interfaces funcionales, se puede usar expresiones lambda para ponerlas en práctica. He aquí cómo se utiliza una expresión lambda a registrar un oyente de cambio en el texto propiedad de un campo de texto denominado Texto 1:

. Text1.textProperty () addListener ((observable, OldValue, nuevovalor) -gt; // código va aquí) -

Aquí hay un ejemplo que registra un oyente de invalidación:

Video: Manipulando eventos no JavaFX

. Text1.textProperty () addListener ((observable) -gt; // código va aquí) -

La única forma en que el addListener sabe si se está registrando un oyente o el cambio de un detector de invalidación es examinado los argumentos que se especifican para la expresión Lambda. Si usted proporciona tres argumentos, addListener registra un oyente cambio. Si usted proporciona un solo argumento, se instala un detector de invalidación.

Este código muestra una sencilla aplicación que utiliza JavaFX oyentes de cambio para variar el tamaño de un rectángulo automáticamente con el tamaño del panel de pila que lo contiene.

Un oyente cambio se ha registrado en propiedad de ancho del panel de la pila de manera que cuando la anchura de los cambios de panel de la pila, el ancho del rectángulo se ajusta automáticamente a la mitad del nuevo ancho del panel de pila. Del mismo modo, un cambio detector se registra en la propiedad de altura para cambiar la altura del rectángulo.

Video: Video 03 JavaFX Manejo de evento clic y KeyTyped para validación de cajas de texto

javafx.application importación * -. javafx.stage importación * -. javafx.scene importación * -. javafx.scene.layout importación * -. javafx.scene.shape importación * -.. javafx.scene.paint importación * - public class AutoRectangle extiende aplicación {void main (String [] args) {public static lanzamiento (args) -} @ Override public void start (Etapa primaryStage) {rectángulo R = new Rectangle (100,100) - @@ a18r.setFill (Color.LIGHTGRAY) -r.setStroke (Color.BLACK) -r.setStrokeWidth (2) -StackPane p = new StackPane () - @@ a23p.setMinWidth (200) -p.setPrefWidth (200) -p.setMaxWidth (200) -p. setMinHeight (200) -p.setPrefHeight (200) -p.setMaxHeight (200) -p.getChildren (). añadir (r) -p.widthProperty (). addListener (@@ a33 (observable, OldValue, nuevovalor) -gt ; r.setWidth ((doble) nuevovalor / 2)) - p.heightProperty () addListener (@@ a38 (observable, OldValue, nuevovalor.) -gt; r.setHeight () nuevovalor / 2 (doble)) - escena de la escena = nueva escena (p) -primaryStage.setScene (escena) -primaryStage.setTitle ("Auto del rectángulo") -primaryStage.show () -}}

Esta figura muestra esta aplicación en acción. Esta figura muestra la ventana inicial mostrado por la aplicación, así como la forma en que aparezca la ventana después de que el usuario ha realizado la ventana más alta y ancha. Como se puede ver, el rectángulo ha aumentado de tamaño proporcionalmente.

Un ejemplo de un sitio web de respuesta.

Los siguientes párrafos describen los aspectos más destacados:

  • 18: Estas líneas crean un rectángulo de 100 x 100 y establecer el color del rectángulo relleno, color de trazo, y la anchura del trazo.

  • 23: Estas líneas crean un panel de pila y establecer sus propiedades de anchura y altura.

  • 33: Estas líneas utilizan una expresión Lambda para registrar un controlador de cambio con parámetro de anchura del panel de pila. Cuando los cambios de la anchura del panel de la pila, el ancho del rectángulo se encuentra a la mitad de la anchura del panel de pila.

    Video: Utilizando mascara no componente TextField do JavaFx

  • 38: Estas líneas utilizan una expresión Lambda registrar un manejador de cambio con el parámetro de la altura del panel de pila. Cuando la altura de la pila panel cambia, la altura del rectángulo se establece en la mitad de la altura del panel de pila.

Artículos Relacionados