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.
- 9.8.3.5.1. ComboBox (4)
- 9.8.3.5.2. ListView (4)
- 9.8.3.5.3. TableView (12)
- 9.8.3.5.4. TreeView (6)
- 9.8.3.5.5. TreeTableView (7)
- 9.8.3.5.6. DatePicker (2)
Les contrôles virtualisés ont ceci de commun qu'ils utilisent tous l'API Cell (API de cellules). Ces contrôlent affichent une vue sur une liste de contenus. La représentation de chaque objet contenu dans la liste est prise en charge par une cellule.
Pour économiser la mémoire et les performances, le nombre de cellules est généralement limité par ce qui est visible à l'écran. Lorsque l'utilisateur fait défiler la vue du contrôle vers le haut ou vers le bas, les anciennes cellules sont amenées à être recyclées pour afficher le nouveau contenu. Lorsque les dimensions du contrôle sont agrandies, de nouvelles cellules sont instanciées pour venir compléter celles préexistantes.
Les principaux contrôles de cette API sont :
- ComboBox<T> - une boite déroulante contenant des objets de type T ;
- ListView<T> - une liste graphique contenant des objets de type T ;
- TreeView<T> - un arbre graphique contenant des objets de type T ;
- TableView<T> - une table graphique contenant des objets de type T, contenant plusieurs colonnes affichant des données d'autres types ;
- TreeTableView<T> - une table graphique contenant des objets de type, contenant plusieurs colonnes affichant des données d'autres types. La première colonne de la table contient un arbre graphique - JDK 8 ou ultérieur ;
- DatePicker - un sélecteur de dates - JDK 8 ou ultérieur.
Note : le contrôle ChoiceBox qui affiche lui aussi une boite déroulante ne fait pas partie des contrôles virtualisés.
Une cellule (cell en anglais) est un nœud graphique qui hérite de la classe javafx.scene.control.Cell<T>. Une cellule est destinée à représenter un objet de type T dans un contrôle virtualisé. Cette représentation peut prendre l'apparence d'un simple label contenant du texte ou une apparence riche avec des images et animations, voire également une apparence éditable qui permet de modifier la valeur de l'objet. La classe Cell hérite de la classe Labeled et est donc également un contrôle.
Une cellule doit être configurée pour afficher la représentation d'une valeur donnée. Étant donné, quelle peut être réutilisée par son contrôle parent, une cellule peut être amenée à être reconfigurée ultérieurement pour représenter une autre valeur totalement différente de la première, voire pas de valeur du tout.
Note : étant donné que la classe Cell hérite de la classe Labeled, elle dispose des propriétés graphic, graphicTextGap et contentDisplay habituelles qui permettent de basculer d'un simple affichage textuel vers un affichage riche.
L'API SceneGraph propose des cellules déjà prêtes à l'emploi dans le package javafx.scene.control.cell.
Une fabrique à cellules (cell factory en anglais) est un callback qui est appelé par le contrôle virtualisé lorsqu'il doit instancier des nouvelles cellules pour son affichage initial. Cette méthode peut être invoquée ultérieurement pour créer de nouvelles cellules lorsque la taille d'affichage du contrôle change. Les contrôles virtualisés contiennent tous une propriété cellFactory qui permet de spécifier un tel callback.
Par exemple, dans une liste graphique (ListView), le nombre de cellules initialement créées est à peu près égal au nombre de lignes de données visibles. De nouvelles cellules sont ensuite créées si la taille d'affichage de la liste graphique change.
À l'heure actuelle, une boite déroulante (ComboBox) fonctionne un peu différemment : initialement, la boite déroulante doit calculer sa largeur maximale d'affichage. Pour cela, elle crée, grâce à sa fabrique, autant de cellules que d'objets contenus et calcule leur largeur. Ensuite, elle ne crée des cellules via sa fabrique de cellules que lorsque son menu déroulant est affiché (ce dernier est affiché en utilisant une instance de ListView).
Note : des optimisations de l'API, notamment en vue de diminuer encore plus le nombre de cellules créées initialement et, plus tard, maintenues en mémoire sont toujours à l’étude pour des versions ultérieures de JavaFX.
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.