Javafx PropertyValueFactory no está poblando Tableview
Esto me ha desconcertado por un tiempo y parece que no puedo entenderlo. Estoy usando Cell Value Factory para rellenar una tabla simple de una columna y no se llena en la tabla.
Lo hace y hago clic en las filas que están pobladas, pero no veo ningún valor en ellas, en este caso, los valores de cadena. [Acabo de editar esto para que sea más claro]
Tengo un proyecto diferente en el que funciona bajo el mismo tipo de modelo de datos. ¿Qué estoy haciendo mal?
Aquí está el código. El código comentado al final parece funcionar bien. He comprobado si existen los errores habituales: crear una nueva instancia de columna o una nueva instancia de tableview. Nada. ¡Por favor ayuda!
// Modelo de datos 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);
}
}
// Controlador de la clase 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());
}
};*/