FAQ JavaFXConsultez toutes les FAQ
Nombre d'auteurs : 4, nombre de questions : 507, dernière mise à jour : 2 novembre 2016 Ajouter une question
Cette FAQ a été réalisée à partir des questions fréquemment posées sur le forum JavaFX de http://java.developpez.com ainsi que l'expérience personnelle des auteurs.
Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant rédacteur, lisez ceci.
Sur ce, nous vous souhaitons une bonne lecture.
Il est possible d’être tenu au courant des événements d'invalidation d'une propriété en mettant en place un écouteur de type javafx.beans.InvalidationListener sur cette propriété.
Par exemple :
Code Java : | Sélectionner tout |
1 2 3 4 5 | myProperty.addListener(new InvalidationListener() { public void invalidated(Observable observable) { System.out.println("Propriété invalidée !"); } }); |
Ou :
Code Java : | Sélectionner tout |
myProperty.addListener(observable-> System.out.println("Propriété invalidée !"));
Lorsqu'une propriété a été invalidée, elle reste non valide tant que sa valeur n'a pas été réévaluée. Dans les faits, cela veut dire que tant qu'un des getters de la propriété n'a pas été invoqué, vous ne recevrez pas d'autre notification d'invalidation.
Par exemple, si nous faisons :
Code java : | Sélectionner tout |
1 2 3 4 5 6 | myProperty.set("Jean"); myProperty.set("Anne"); myProperty.set("Luc"); System.out.println(myProperty.get()); myProperty.set("Marie"); myProperty.set("Ibrahim"); |
Nous n'aurons que deux notifications d'invalidation :
- lorsque la propriété a été mise à la valeur "Jean" - la propriété était initialement à la valeur null et a vu sa valeur initiale invalidée ;
- lorsque la propriété a été mise à la valeur "Marie" - nous avons revalidé la valeur "Luc" dans la propriété juste avant cet appel en invoquant un getter.
Il est possible d’être tenu au courant des événements de modification d'une propriété en mettant en place un écouteur de type javafx.beans.ChangeListener sur cette propriété.
Par exemple :
Code Java : | Sélectionner tout |
1 2 3 4 5 | myProperty.addListener(new ChangeListener<String>() { public void changed(ObservableValue<? extends String> observableValue, String oldValue, String newValue) { System.out.printf("Propriété modifiée \"%s\" -> \"%s\" !", oldValue, newValue).println(); } }); |
Ou :
Code Java : | Sélectionner tout |
myProperty.addListener((ObservableValue<? extends String> observableValue, String oldValue, String newValue)-> System.out.printf("Propriété modifiée \"%s\" -> \"%s\" !", oldValue, newValue).println());
Ici, nous accédons aux modifications de la valeur : nous avons accès à l'ancienne valeur, mais aussi, et surtout à la nouvelle valeur, c'est-à-dire qu'on a dû réévaluer la valeur de la propriété. Dans les faits, cela veut dire que vous recevrez des notifications de modification à chaque changement de valeur de la propriété.
Par exemple, si nous faisons :
Code java : | Sélectionner tout |
1 2 3 4 5 6 | myProperty.set("Jean"); myProperty.set("Anne"); myProperty.set("Luc"); System.out.println(myProperty.get()); myProperty.set("Marie"); myProperty.set("Ibrahim"); |
Nous recevrons une notification de modification à chaque appel du setter. Il s'agit donc d'une gestion d’événements plus lourde et plus gourmande en ressources que celle des événements d'invalidation.
Oui, vous pouvez placer à la fois des écouteurs d'invalidation (InvalidationListener) et des écouteurs de modification (ChangeListener) sur une même propriété.
Cependant, la nature même des écouteurs de modification fait que la valeur de la propriété sera réévaluée à chaque modification. Donc, vous recevrez désormais des événements d'invalidation à chaque modification également.
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.