JavaFX: propriétés de liaison

JavaFX propriété de liaison vous permet de synchroniser la valeur de deux propriétés de sorte que chaque fois que l'une des propriétés les changements, la valeur de l'autre bien est mis à jour automatiquement. Deux types de liaison sont supportés:

  • Liaison unidirectionnelle: Avec, les œuvres ayant des consolidations unidirectionnelles dans une seule direction. Par exemple, si vous liez la propriété A à la propriété B, la valeur des biens A change lorsque des changements propriété B, mais pas dans l'autre sens.

  • Liaison bidirectionnelle: Avec bidirectionnel de liaison, les deux valeurs de propriété sont synchronisés de sorte que si l'un des changements de propriété, l'autre propriété est automatiquement changé ainsi.

Mise en place soit type de liaison est étonnamment facile. Chaque propriété possède un lier et un bindBiDirectional Procédé. Pour mettre en place une liaison, il suffit d'appeler cette méthode, spécifiant la propriété que vous souhaitez lier comme argument.

Voici un exemple qui crée une liaison unidirectionnelle sur la texte établissement d'une étiquette à la texte établissement d'une zone de texte, de sorte que le contenu de l'étiquette affiche toujours le contenu du champ de texte:

lable1.textProperty () lier (text1.textProperty ()). -

Avec cette liaison en place, le texte affiché par label1 est automatiquement mis à jour, caractère par caractère, lorsque les données utilisateur tape dans le champ de texte.

L'exemple suivant montre comment créer un bidirectionnel liaison entre deux champs de texte, nommé text1 et text2:


. text1.textProperty () bindBidirectional (text2.textProperty ()) -

Avec cette liaison en place, le texte que vous tapez dans l'un des champs de texte sera automatiquement répliqué dans l'autre.

Pour montrer comment la liaison peut être utilisé dans un programme complet, ce code fiche montre un programme avec deux champs de texte avec une paire d'étiquettes lié à chacun. Le premier champ de texte accepte le nom d'un personnage dans une pièce, et le second champ de texte accepte le nom d'un acteur. Les étiquettes affichent l'acteur qui jouera le rôle, comme indiqué dans la figure.

image0.jpg
javafx.application d'importation * -. javafx.stage d'importation * -. javafx.scene d'importation * -. javafx.scene.layout d'importation * -. javafx.geometry d'importation * -.. javafx.scene.control d'importation * - Roleplayer public class étend application {public static void main (String [] args) {lancement (args) -} TextField txtCharacter-TextField txtActor- @ Override début public void (étape primaryStage) {// créer le personnage labelLabel lblCharacter = nouveau label ("Nom du personnage: ") -lblCharacter.setMinWidth (100) -lblCharacter.setAlignment (Pos.BOTTOM_RIGHT) - // Créer le texte du personnage fieldtxtCharacter = new TextField()-txtCharacter.setMinWidth(200)-txtCharacter.setMaxWidth(200)-txtCharacter.setPromptText("Enter le nom du personnage ici ") - // Création de l'Acteur labelLabel lblActor = new Label (" Nom de l'acteur: ".) - lblActor.setMinWidth (100) -lblActor.setAlignment (Pos.BOTTOM_RIGHT) - // Créer le texte Acteur fieldtxtActor = new TextField () - txtActor.setMinWidth (200) -txtActor.setMaxWidth (200) -txtActor.setPromptText ("Entrez le nom de l'acteur ici.") - // créer le rôle labelsLabel lblRole1 = nouveau label ("Le rôle du ") -Étiquette lblRole2 = nouveau label () - Label lblRole3 = nouveau label (" sera joué par ") -Étiquette lblRole4 = nouveau label () - // créer le personnage paneHBox paneCharacter = new HBox (20, lblCharacter, txtCharacter) -paneCharacter.setPadding (nouveaux encarts (10)) - // Création de l'Acteur paneHBox paneActor = new HBox (20, lblActor, txtActor) -paneActor.setPadding (nouveaux encarts (10)) - // créer le rôle paneHBox paneRole = new HBox (lblRole1, lblRole2, lblRole3, lblRole4) -paneRole.setPadding (nouveaux encarts (10)) - // Ajouter les vitres de caractères et acteur à un volet de VBoxVBox = new VBox (10, paneCharacter, paneActor, paneRole) - / / Créez le bindingslblRole2.textProperty().bind(txtCharacter.textProperty())-lblRole4.textProperty().bind(txtActor.textProperty())-// Réglez le stageScene scène = nouvelle scène (volet) -primaryStage.setScene (scène) -primaryStage.setTitle ("de joueur de rôle») - primaryStage.show () -}}

» » » » JavaFX: propriétés de liaison