-
tableView count rows
Bonjour,
J'utilse un tableView et je souhaite afficher juste en dessous du tableView le nombre de lignes.
Pour obtenir le nombre de lignes, pas de problème (table.getItems().size() ou data.size()) mais comment puis-je faire pour que ce nombre (label par exemple) se mette à jour lors d'une suppression d'une ligne, l'ajout d'un ligne ou d'un filtrage ?
Merci pour toute aide.
Marc
-
La version simple :
Code:
label.textProperty().bind(Bindings.convert(Bindings.size(tableview.getData()));
Ou encore :
Code:
label.textProperty().bind(Bindings.format("%d lignes", Locale.FRENCH, Bindings.size(tableview.getData()));
-
Un grand merci.
La 2eme solution m'affiche un message d'erreur mais c'est pas grave, la 1ere fonctionne.
Maintenant, quand j'effectuer un filtrage (par exemple chez moi sur les dates) --> filteredItems, dans ce cas le label ne se met pas à jour. J'imagine que ce cas n'est pas 'solutionnable' ?
Marc
-
J'ai tapé ça de mémoire en lisant rapidement la doc de l'API donc c'est sujet à tests et vérif (la doc de la méthode dit de voir la classe java.util.Formatter pour la syntaxe du pattern). Si ça se trouve il faut utiliser %f au lieu de %d à cause de la valeur de retournée par le binding sur la taille et donc il va falloir jouer avec les options de formattage pour afficher ça comme un entier.
Faudrait voir un peu plus de code. Mais bon s'il y a filtrage c'est sur la liste filtrée qu'il faut se binder. Je peux voir comment tu mets en place ta table et ton filtre dans un exemple simple ?
-
En fait, pour la 2eme solution, il faut mettre le paramètre Locale.FRENCH en 1er et ensuite le String.
Effectivement, c'est sur la liste filtrée qu'il faut binder. Ca fonctionne maintenant.
Un grand merci.
Marc