JavaFX: Verwendung der Immobilie Veranstaltungen

JavaFX Eigenschaften bieten ein addListener Methode, die Sie Ereignishandler hinzufügen, die aufgerufen werden, wenn der Wert eines Eigenschaftsänderungen können. Sie können zwei Arten von Immobilien Event-Handler zu erstellen:

  • EIN Änderung Zuhörer, die aufgerufen wird, wenn der Wert der Eigenschaft ist neu berechnet worden. Die Änderung Zuhörer drei Argumente übergeben: Die Eigenschaft, deren Wert sich geändert hat, wird der vorherige Wert der Immobilie, und der neue Wert.

  • Ein Ungültigkeits Zuhörer, die aufgerufen wird, wenn der Wert der Immobilie unbekannt wird. Dieses Ereignis wird ausgelöst, wenn der Wert der Immobilie neu berechnet werden muss, ist aber noch nicht neu berechnet. Ein Ungültigkeits Ereignis-Listener nur ein Argument übergeben: die Eigenschaft Objekt selbst.

Namen ändern und die Entwertung Zuhörer werden durch funktionale Schnittstellen definiert Change und InvalidationListener. Da diese Schnittstellen sind funktionale Schnittstellen, können Sie Lambda-Ausdrücke verwenden, um sie umzusetzen. Hier ist, wie Sie einen Lambda-Ausdruck verwenden, um eine Änderung Zuhörer auf das registrieren Text Eigenschaft eines Textfeld mit dem Namen text1:

. Text1.textProperty () addListener ((beobachtbar, OldValue newvalue) -> // Code geht hier) -

Hier ist ein Beispiel, das eine Ungültigkeits Zuhörer registriert:

. Text1.textProperty () addListener ((beobachtbaren) -> // Code geht hier) -

Die einzige Möglichkeit, den addListener weiß, ob Sie eine Änderung Hörer oder ein Ungültigkeits Zuhörer ist, indem man die Argumente, die Sie angeben, für die Lambda-Ausdruck zu registrieren. Wenn Sie bieten drei Argumente, addListener registriert eine Änderung Zuhörer. Wenn Sie nur ein Argument liefern, wird eine Ungültigkeits Zuhörer installiert.

Diese Codeauflistung zeigt eine einfache JavaFX Anwendung, die die Größe eines Rechtecks ​​automatisch mit der Größe des Stapelbereich zu variieren Änderungs Hörer verwendet, die es enthält.

Eine Änderung Zuhörer wird mit dem Stapelbereich Breite Eigenschaft registriert, so dass, wenn die Breite der Stapelscheibe ändert, wird die Breite des Rechtecks ​​automatisch auf die Hälfte der neuen Breite des Stapels Scheibe gesetzt. Ebenso wird eine Änderung Zuhörer auf der Höhe Eigenschaft registriert, um die Höhe des Rechtecks ​​ändern.

Import javafx.application. * - Import javafx.stage. * - Import javafx.scene. * - Import javafx.scene.layout. * - Import javafx.scene.shape. * -. Import javafx.scene.paint * - public class AutoRectangle erstreckt Anwendung {public static void main (String [] args) {Start (args) -} @ außer Kraft setzen public void Start (Stufe primaryStage) {Rectangle 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().add(r)-p.widthProperty().addListener(@@a33(observable, OldValue newvalue) -> r.setWidth ((Doppel) newvalue / 2)) - p.heightProperty () addListener (@@ A38 (beobachtbar, OldValue newvalue.) -> r.setHeight ((Doppel) newvalue / 2) ) -Scene Szene = new Szene (p) -primaryStage.setScene (Szene) -primaryStage.setTitle ( "Auto Rechteck") - primaryStage.show () -}}

Diese Abbildung zeigt diese Anwendung in Aktion. Diese Figur zeigt das erste Fenster der Anwendung angezeigt und wie das Fenster erscheint, wenn der Benutzer das Fenster höher und breiter gemacht hat. Wie Sie sehen können, hat das Rechteck proportional vergrößert.

bild0.jpg

Die folgenden Abschnitte beschreiben die Highlights:

  • 18: Diese Linien schaffen ein 100x100 Rechteck und legen Sie die Füllfarbe des Rechtecks, Strichfarbe und Strichbreite.

  • 23: Diese Linien schaffen einen Stapel Bereich und legen Sie die Breite und Höhe Eigenschaften.

  • 33: Diese Linien verwenden, um einen Lambda-Ausdruck, der eine Änderung Handler mit dem Stapel Fenster des Breitenparameter zu registrieren. Wenn die Breite Änderungen der Stapelscheibe wird die Breite des Rechtecks ​​auf die Hälfte des Stapels Scheibe Breite eingestellt.

  • 38: Diese Linien verwenden, um einen Lambda-Ausdruck, der eine Änderung Handler mit dem Stapelbereich der Höhenparameter zu registrieren. Wenn die Höhe des Stapels Scheibe ändert, wird die Höhe des Rechtecks ​​auf die Hälfte des Stapels Scheibe in der Höhe einstellen.

Menü