L'utilisation de base de la vue de table consiste à associer des lignes à des classes définies par l'utilisateur (modèles de données). L'explication ici est facile à comprendre en se référant à ce qui suit.
AOE Diary: Comment personnaliser les cellules ListView et TableView ORACLE: JavaFX UI Component Operations 13 Table View
Dans cette entrée, nous allons explorer comment la vue de table créée de cette manière est modifiable et ses variations.
Controller.java Entity.java Main.fxml
Vous pouvez utiliser TextFieldTableCell
pour rendre le texte d'une cellule modifiable.
Lorsque vous utilisez TextFieldTableCell
, modifiez CellFactory
de TableColumn
par défaut. Notez que ** ne peut être modifié que si les propriétés modifiables TableView
et TableColumn
sont définies sur true **. (Il peut également être modifiable dans Scene Builder)
Controller.java
tableView.setEditable(true);
column1.setEditable(true);
column1.setCellFactory(TextFieldTableCell.forTableColumn());
TextFieldTableCell
a un mécanisme pour basculer le composant affiché sur TextField
par ** ON / OFF ** dans l'état d'édition.
StringConverter StringConverter fournit un mécanisme pour convertir des chaînes en d'autres classes.
Ce StringConverter est requis si le type de propriété est autre que String. StringConverter a de nombreuses implémentations pour chaque type à convertir, vous pouvez donc choisir parmi elles à utiliser. Package javafx.util.converter
//Lors de la modification de colonnes de type booléen sous forme de texte
column3.setCellFactory(TextFieldTableCell.forTableColumn(new BooleanStringConverter()));
Vous pouvez utiliser «ChoiceBoxTableCell», «ComboBoxTableCell» pour rendre une cellule sélectionnable et modifiable. ChoiceBox ne fournit pas de fonction de défilement pour les choix, donc il ne convient pas quand il y a beaucoup de choix.
ChoiceBox
ComboBox
Controller.java
// ChoiceBox
column2.setCellFactory(ChoiceBoxTableCell.forTableColumn("Item1", "Item2", "Item3"));
// ComboBox
column2.setCellFactory(ComboBoxTableCell.forTableColumn("Item1", "Item2", "Item3"));
De même, ceux-ci ont également un mécanisme pour basculer le composant affiché sur ChoiceBox
, ComboBox
en activant / désactivant l'état d'édition.
Vous pouvez rendre les cellules modifiables en utilisant CheckBoxTableCell
. Cette cellule n'a pas d'état d'édition et vous pouvez modifier sa valeur en un seul clic.
Controller.java
column3.setCellFactory(CheckBoxTableCell.forTableColumn(column3));
Créons une cellule personnalisée qui affiche le standard JavaFX ColorPicker
lors de l'édition. Lorsqu'il n'est pas modifié, le volet vide est rempli.
column4.setCellFactory(ColorPickerTableCell.forTableColumn());
L'image de transition approximative est la suivante. Si vous pouvez comprendre le moment où le contrôle d'affichage est commuté par setGraphic
et le mécanisme qui commitEdit
est appelé dans le sélecteur de couleur ʻOnAction`, je pense qu'il peut être appliqué à d'autres contrôles.
J'essaierai également d'afficher le sélecteur de couleur en plaçant le contrôle directement sans utiliser l'état d'édition. Je pense que ce modèle est généralement implémenté en tant que cellule personnalisée. C'est similaire à la case à cocher ci-dessus.
DirectColorPickerTableCell.java
column4.setCellFactory(DirectColorPickerTableCell.forTableColumn());
Puisque l'état d'édition n'est pas utilisé, la valeur du modèle de données est réécrite directement à partir de ʻOnAction` du sélecteur de couleurs.
C'est bien car le mécanisme est simple et il est facile pour l'utilisateur de savoir qu'il peut être édité, mais il faut noter que les commandes lourdes alignées sur l'écran augmentent la charge.
Il existe différents types de cellules intégrées introduites au début, comme pour les arbres et les listes ainsi que pour les tableaux. C'est une bonne idée de vérifier avant de créer une cellule personnalisée. Package javafx.scene.control.cell
[Light Lab: Customize JavaFX Cell](http://krr.blog.shinobi.jp/javafx/javafx%20%E3%82%BB%E3%83%AB%E3%81%AE%E3%82% AB% E3% 82% B9% E3% 82% BF% E3% 83% 9E% E3% 82% A4% E3% 82% BA) Source: GitHub FXML: GitHub
Recommended Posts