Javafx PropertyValueFactory ne remplit pas Tableview
Cela m'a déconcerté pendant un certain temps maintenant et je n'arrive pas à obtenir la portée de celui-ci. Je suis en utilisant la Valeur de la Cellule de l'Usine pour remplir une simple colonne de la table et il n'est pas renseignée dans le tableau.
Qu'il fait et je clique sur les lignes qui sont les plus peuplés, mais je ne vois aucune valeur en eux - dans ce cas, les valeurs de Chaîne. [Je viens de modifié cela pour la rendre plus claire]
J'ai un autre projet en vertu de laquelle elle fonctionne sous le même type de modèle de données. Ce que je fais mal?
Voici le code. Le code commenté à la fin semble fonctionner bien. J'ai vérifié pour voir si les erreurs habituelles - la création d'une nouvelle colonne d'instance ou d'un nouveau tableview exemple, sont là. Rien. S'il vous plaît aider!
//Modèle De Données Simple
Stock.java
public class Stock {
private SimpleStringProperty stockTicker;
public Stock(String stockTicker) {
this.stockTicker = new SimpleStringProperty(stockTicker);
}
public String getstockTicker() {
return stockTicker.get();
}
public void setstockTicker(String stockticker) {
stockTicker.set(stockticker);
}
}
//Contrôleur de classe
MainGuiController.java
private ObservableList<Stock> data;
@FXML
private TableView<Stock> stockTableView;//= new TableView<>(data);
@FXML
private TableColumn<Stock, String> tickerCol;
private void setTickersToCol() {
try {
Statement stmt = conn.createStatement();//conn is defined and works
ResultSet rsltset = stmt.executeQuery("SELECT ticker FROM tickerlist order by ticker");
data = FXCollections.observableArrayList();
Stock stockInstance;
while (rsltset.next()) {
stockInstance = new Stock(rsltset.getString(1).toUpperCase());
data.add(stockInstance);
}
} catch (SQLException ex) {
Logger.getLogger(WriteToFile.class.getName()).log(Level.SEVERE, null, ex);
System.out.println("Connection Failed! Check output console");
}
tickerCol.setCellValueFactory(new PropertyValueFactory<Stock,String>("stockTicker"));
stockTableView.setItems(data);
}
/*THIS, ON THE OTHER HAND, WORKS*/
/*Callback<CellDataFeatures<Stock, String>, ObservableValue<String>> cellDataFeat =
new Callback<CellDataFeatures<Stock, String>, ObservableValue<String>>() {
@Override
public ObservableValue<String> call(CellDataFeatures<Stock, String> p) {
return new SimpleStringProperty(p.getValue().getstockTicker());
}
};*/
source d'informationauteur Nepze Tyson
Vous devez vous connecter pour publier un commentaire.
Comment Résoudre le problème
Le cas de votre getter et setter sont mauvais.
getstockTicker
devrait êtregetStockTicker
setstockTicker
devrait êtresetStockTicker
Quelques Informations
Votre PropertyValueFactory reste le même:
La convention de nommage semble plus évident lorsque vous ajoutez une propriété accesseur pour votre Stock classe:
La PropertyValueFactory utilise la réflexion pour trouver les accesseurs. D'abord, il va essayer d'utiliser le stockTickerProperty accesseur et, si ce n'est pas présent revenir à des getters et setters. Fournir une propriété de l'accesseur est recommandé que vous activera automatiquement votre table pour observer la propriété dans le modèle sous-jacent, une mise à jour dynamique des données que le modèle sous-jacent changements.
mettre le Getter et le Setter de la méthode dans les données de classe pour tous les éléments.