La liaison de données (databinding)
Propriété observable, liaison unidirectionnelle et bidirectionnelle, liaison calculée, convertisseur, liste observable, et l'interdiction d'écrire dans une propriété liée, avec les propriétés de JavaFX.
- 25 cartes
- 5 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Mises en situation
- Comprendre
Quelques cartes du deck
Propriété observable : de quoi s'agit-il ?
Voir la réponse
Valeur rangée dans un objet qui prévient ses écouteurs chaque fois qu'elle change, et qui peut être liée à une autre.
En JavaFX,
SimpleStringPropertyen est une : unLabelexpose son texte partextProperty(), qu'on peut observer ou lier au lieu d'appelersetText.Qu'affiche ce programme ?
```java
StringProperty nom = new SimpleStringProperty("Ada");
StringProperty copie = new SimpleStringProperty();
copie.bind(nom);
nom.set("Alan");
System.out.println(copie.get());`AlanAdanull- Rien : une exception est levée à la ligne 4
Voir la réponse
AlanAprès
bind,copiereprend la valeur denomà chaque changement. Écrire dansnom, la source, est permis ; c'est écrire danscopiequi serait interdit.On lie une propriété à une autre dans un seul sens avec la méthode …, et dans les deux sens avec ….
Voir la réponse
On lie une propriété à une autre dans un seul sens avec la méthode bind, et dans les deux sens avec bindBidirectional.
Choisir le sens, c'est choisir qui a le droit d'écrire : dans
bind, seule la source ; dansbindBidirectional, les deux côtés.Liaison unidirectionnelle : de quoi s'agit-il ?
Voir la réponse
Lien par lequel une propriété cible reprend toujours la valeur de sa source, sans que le changement inverse soit possible.
cible.bind(source): modifier la source met la cible à jour, mais écrire dans la cible lève une exception tant que la liaison existe.L'étiquette est liée à
nomparbind, mais elle doit afficher « Inconnu » tant quenomest vide. Quelle réparation garde l'étiquette toujours synchronisée avecnom?- Lier l'étiquette à
Bindings.when(nom.isEmpty()).then("Inconnu").otherwise(nom) - Appeler
unbind()avant chaquesetText("Inconnu")quandnomest vide - Entourer le
setTextd'untry/catchpour ignorer l'exception - Remplacer
bindparbindBidirectionalpour pouvoir écrire dans l'étiquette elle-même
Voir la réponse
Lier l'étiquette à
Bindings.when(nom.isEmpty()).then("Inconnu").otherwise(nom)La règle « vide donne Inconnu » s'exprime dans la liaison elle-même, qui se recalcule seule.
unbind()casse la synchronisation ; letry/catchn'écrit rien ;bindBidirectionalrenverrait « Inconnu » dansnom.- Lier l'étiquette à