Das hat mich schon eine Weile verwirrt und ich kann es nicht begreifen. Ich verwende Cell Value Factory, um eine einfache Tabelle mit einer Spalte zu füllen, und sie füllt die Tabelle nicht auf.Javafx PropertyValueFactory wird nicht gefüllt Tableview
Es tut, und ich klicke auf die Zeilen, die ausgefüllt sind, aber ich sehe keine Werte in ihnen - in diesem Fall String-Werte. [Ich habe dies gerade bearbeitet, um es klarer zu machen]
Ich habe ein anderes Projekt, unter dem es unter der gleichen Art von Datenmodell arbeitet. Was mache ich falsch?
Hier ist der Code. Der kommentierte Code am Ende scheint jedoch zu funktionieren. Ich habe überprüft, ob die üblichen Fehler - Erstellen einer neuen Spalteninstanz oder einer neuen Tableview-Instanz - vorhanden sind. Nichts. Bitte helfen Sie!
// Einfache Datenmodell 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);
}
}
// Controller-Klasse 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());
}
};*/
Hier ist der AGGRAVIERENDE TEIL: ALL mein Code verwendet eine Methode Namenskonvention wie diese. ALLES davon (abgesehen von diesem einen Ausschnitt) Ich habe DAYS zu diesem Thema verbracht ... MEIN FREAKIN GOTT !! DANKE !!!! –
@jewelsea warum Getter zweimal angerufen? und mehr als das Objekt der Person? – UnKnown
Entschuldigung Unbekannt, ich verstehe nicht, was Sie fragen. Vielleicht möchten Sie eine neue Frage stellen. – jewelsea