Accueil / Articles PiApplications. / La plate-forme Java / Java FX

Doter une en-tête de colonne d'une info-bulle.

Lorsque l'on parcours la documentation de la classe TableColumn, on ne trouve aucune méthode qui permette de doter son en-tête d'une info-bulle. La raison en est simple : ce n'est pas une classe dérivée de la classe Control.

Pour parvenir à nos fins, nous devons nous rappeler qu'une interface graphique Java FX est une arborescence de "noeuds" (classe Node). Il est donc possible d'affecter à un objet de classe TableColumn un contrôle dérivé de la classe Control via la méthode setGraphics. C'est ensuite à ce contrôle que nous pourrons associer notre info-bulle. Voyons cela sur un exemple :

TableColumn<ContactRow, Image> tclStatus = new TableColumn<>();
_tvwCntMaster.getColumns().add(tclStatus);  // TableView auquel on ajoute la colonne
tclStatus.setMinWidth(24);
tclStatus.setMaxWidth(24);
tclStatus.setPrefWidth(24);
Label lbl = new Label();
lbl.setMinWidth(24);
lbl.setMaxWidth(24);
lbl.setPrefWidth(24);
lbl.setMinHeight(24);
lbl.setMaxHeight(24);
lbl.setPrefHeight(24);
tclStatus.setGraphic(lbl);
lbl.setTooltip(new Tooltip(_trn.getString("SelectToSync")));

Dans cet exemple, nous créons une colonne destinées à afficher des icônes 24 x 24. La largeur est trop faible pour y afficher un titre. C'est pour cette raison que nous devons fixer les dimensions du contrôle de classe Label. Sans cela, la surface offerte par ce contrôle serait trop faible pour que l'utilisateur puisse facilement y glisser la souris dessus pour afficher l'info-bulle.

(c) PiApplications 2016