Comment utiliser le PropertyValueFactory correctement?
Je suis en train de faire une table avec une TableView et de le remplir par programme basé sur une liste de User
objets. Le User
a trois variables, nameProperty
(String), rankProperty
(Enum Rank), et netMeritsProperty
(int). Ce sont tous stockés dans SimpleStringProperty
objets. Mon problème est que les données n'apparaissent pas dans la table, comme indiqué ici:
Voici mon code pour la table. Ce que je ne suis pas à la compréhension?
TableColumn<User, String> name = new TableColumn<>("Name");
name.setCellValueFactory(new PropertyValueFactory<User, String>("nameProperty"));
TableColumn<User, String> rank = new TableColumn<>("Rank");
rank.setCellValueFactory(new PropertyValueFactory<User, String>("rankProperty"));
TableColumn<User, String> netMerits = new TableColumn<>("Net Merits");
netMerits.setCellValueFactory(new PropertyValueFactory<User, String>("netMeritsProperty"));
userTable.getColumns().addAll(name, rank, netMerits);
Et ce documents ne sont pas vous aider? docs.oracle.com/javafx/2/ui_controls/table-view.htm
Éventuellement, vous n'avez pas besoin d'ajouter de la "Propriété" à la fin de "nameProperty", etc?
Ou vous n'avez pas à remplir TableView avec une base de données
Donc après je reçois un peu de bon sens, j'ai pris un coup d'oeil à la Javadoc, j'ai découvert que, apparemment, lorsque vous construisez une
Ne vous inquiétez pas pour ça =)
Éventuellement, vous n'avez pas besoin d'ajouter de la "Propriété" à la fin de "nameProperty", etc?
Ou vous n'avez pas à remplir TableView avec une base de données
Donc après je reçois un peu de bon sens, j'ai pris un coup d'oeil à la Javadoc, j'ai découvert que, apparemment, lorsque vous construisez une
PropertyValueFactory
avec un attribut tel que name
, il cherche une méthode appelée Person.nameProperty()
. Désolé de perdre votre temps.Ne vous inquiétez pas pour ça =)
OriginalL'auteur mattbdean | 2013-05-04
Vous devez vous connecter pour publier un commentaire.
La réponse est sur l'attention, la corde sur laquelle le contenu que vous donner comme paramètre de
PropertyValueFactory
, et les méthodes qui sont mises en œuvre dans votre encapsulé type de données.Instanciation :
va rechercher pour :
OriginalL'auteur Alexander Kirov
À l'aide de PropertyValueFactory est simple, mais ce n'est pas à toute épreuve.
Probablement la seule chose gênante à l'aide de PropertyValueFactory est que l'argument que vous fournissez doit correspondre au nom de votre JavaFX Bean propriété selon une STRICTE de la convention:
La meilleure façon est de regarder votre JavaFX Bean bloc de définition, et de trouver votre ligne de Propriété. Prendre le nom de la propriété, omettre la partie qui est "bien", et de le copier exactement (dans le même cas) à la chaîne que vous transmettez à PropertyValueFactory.
Par exemple, disons que vous avez ce JavaFX Bean définition:
Regarder le nom de la propriété dans la dernière ligne, "firstNameProperty". Omettre "Propriété", et la chaîne résultante est ce que vous devez utiliser exactement comme votre argument de type Chaîne de PropertyValueFactory, par exemple. "firstName".
OriginalL'auteur scottb