JavaFX: Bindungseigenschaften

JavaFX Eigenschaftsbindung Damit können Sie den Wert von zwei Eigenschaften so zu synchronisieren, dass, wenn eine der Eigenschaften ändert, wird der Wert der anderen Eigenschaft automatisch aktualisiert. Zwei Arten von Bindung werden unterstützt:

  • Unidirektionale Bindung: Mit unidirektionale Bindung, die Bindung funktioniert nur in eine Richtung. Zum Beispiel, wenn Sie Eigenschaft A Eigenschaft B binden, ändert sich der Wert der Eigenschaft A, wenn Eigenschaft B ändert, aber nicht umgekehrt.

  • Bidirektionale Bindung: Mit bidirektionalen Bindung werden die beiden Eigenschaftswerte synchronisiert, so dass, wenn eine Eigenschaft ändert, wird die andere Eigenschaft automatisch auch geändert.

Einrichten der beiden Arten von Bindung ist überraschend einfach. Jede Eigenschaft hat eine binden und bindBiDirectional Verfahren. So richten Sie diese Methode, um eine Bindung, rufen Sie einfach unter Angabe der Eigenschaft, die Sie als Argument binden möchten.

Hier ist ein Beispiel, das eine unidirektionale Bindung an das schafft Text Eigenschaft eines Etiketts an die Text Eigenschaft eines Textfeldes, so dass der Inhalt des Etiketts zeigt immer den Inhalt des Textfeldes:

lable1.textProperty () binden (text1.textProperty ()). -

In diesem Ort verbindlich angezeigte Text durch label1 automatisch aktualisiert wird, Zeichen für Zeichen, wenn der Benutzer Daten in das Textfeld ein.

Das folgende Beispiel zeigt, wie eine bidirektionale zu schaffen zwischen zwei Textfelder verbindlich, mit dem Namen text1 und text2:

. Text1.textProperty () bindBidirectional (text2.textProperty ()) -

In diesem Ort verbindlich, jeder Text, den Sie in jedem Textfeld eingeben, werden automatisch in der anderen repliziert werden.

Um zu zeigen, wie Bindung kann in einem kompletten Programm verwendet werden, diese Codeliste zeigt ein Programm mit zwei Textfelder mit einem Paar von Etiketten an jedem gebunden. Der erste Textfeld akzeptiert den Namen eines Charakters in einem Spiel, und das zweite Textfeld akzeptiert den Namen eines Schauspielers. Die Etiketten zeigen den Schauspieler, der die Rolle spielen wird, wie in der Abbildung dargestellt.

bild0.jpg
Import javafx.application. * - Import javafx.stage. * - Import javafx.scene. * - Import javafx.scene.layout. * - Import javafx.geometry. * -. Import javafx.scene.control * - öffentliche Klasse Roleplayer erweitert Anwendung {public static void main (String [] args) {Start (args) -} TextField- txtCharacter-TextField- txtActor- @ außer Kraft setzen public void Start (Stufe primaryStage) {// erstellen Sie die Zeichen labelLabel lblCharacter = neues Label ( "Character Name: ") -lblCharacter.setMinWidth (100) -lblCharacter.setAlignment (Pos.BOTTOM_RIGHT) - // erstellen Sie die Zeichentext fieldtxtCharacter = new TextField()-txtCharacter.setMinWidth(200)-txtCharacter.setMaxWidth(200)-txtCharacter.setPromptText("Enter der Name des Charakters hier ") - // Der Schauspieler erstellen labelLabel lblActor = neues Label (" Schauspieler Name: ".) - lblActor.setMinWidth (100) -lblActor.setAlignment (Pos.BOTTOM_RIGHT) - // Der Schauspieler Text erstellen fieldtxtActor = new TextField- () - txtActor.setMinWidth (200) -txtActor.setMaxWidth (200) -txtActor.setPromptText ( "Geben Sie den Namen des Darstellers hier.") - // erstellen Sie die Rolle labelsLabel lblRole1 = neues Label ( "The Rolle ") -Label lblRole2 = neues Label () - Etiketten lblRole3 = neues Label (" wird durch "gespielt werden) -Label lblRole4 = neues Label () - // erstellen Sie die Zeichen paneHBox paneCharacter = new HBox (20, lblCharacter, txtCharacter) -paneCharacter.setPadding (neue Einschübe (10)) - // erstellen Sie die Schauspieler paneHBox paneActor = new HBox (20, lblActor, txtActor) -paneActor.setPadding (neue Einschübe (10)) - // erstellen Sie die Rolle paneHBox paneRole = new HBox (lblRole1, lblRole2, lblRole3, lblRole4) -paneRole.setPadding (neue Einschübe (10)) - // Fügen Sie die Rolle und Schauspieler Scheiben zu einer VBoxVBox Scheibe = new VBox (10, paneCharacter, paneActor, paneRole) - / / erstellen der bindingslblRole2.textProperty().bind(txtCharacter.textProperty())-lblRole4.textProperty().bind(txtActor.textProperty())-// Stellen Sie die stageScene Szene = new Szene (Scheibe) -primaryStage.setScene (Szene) -primaryStage.setTitle ( "Role Player") - primaryStage.show () -}}

Menü