Questo mi ha lasciato per un po 'di tempo e non riesco a capirlo. Sto usando Cell Value Factory per popolare una semplice tabella di colonne e non popola nella tabella.Javafx PropertyValueFactory non popolato Tableview
Fa e faccio clic sulle righe che vengono popolate ma non vedo alcun valore in esse, in questo caso Valori stringa. [Ho appena modificato questo per renderlo più chiaro]
Ho un progetto diverso sotto il quale funziona con lo stesso tipo di modello di dati. Che cosa sto facendo di sbagliato?
Ecco il codice. Il codice commentato alla fine sembra funzionare comunque. Ho controllato se ci sono i soliti errori - la creazione di una nuova istanza di colonna o di una nuova istanza di tableview. Niente. Per favore aiuto!
// semplice modello di dati 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);
}
}
// classe Controller 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());
}
};*/
Ecco la parte più AGGRAVATING: TUTTO il mio codice utilizza una convenzione di denominazione del metodo come quella. TUTTO (beh, eccetto per quel frammento) ho passato GIORNI su questo argomento ... IL MIO DIO FREAKIN !! GRAZIE !!!! –
@jewelsea perché Getter ha chiamato due volte? e più dell'oggetto della persona? – UnKnown
Siamo spiacenti, non noto, non capisco cosa stai chiedendo. Potresti voler fare una nuova domanda. – jewelsea