To od razu mnie zaskoczyło i nie mogę tego uchwycić. Używam Cell Value Factory do wypełnienia prostej tabeli z jedną kolumną i nie zapełnia się ona w tabeli.Javafx PropertyValueFactory niewypełnianie Tableview
Robi to i klikam wiersze, które są wypełnione, ale nie widzę w nich żadnych wartości - w tym przypadku wartości ciągu. [Właśnie zmieniłem to, aby było wyraźniejsze]
Mam inny projekt, pod którym działa w ramach tego samego modelu danych. Co ja robię źle?
Oto kod. Skomentowany kod na końcu wydaje się jednak działać. Sprawdziłem, czy występują zwykłe błędy - tworzenie nowej instancji kolumny lub nowej instancji tableview. Nic. Proszę pomóż!
// Prosty model danych 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);
}
}
// klasa kontrolera 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());
}
};*/
Oto najbardziej GRACZAJĄCA CZĘŚĆ: CAŁA mojego kodu używa konwencji nazewnictwa metod takich jak ta. WSZYSTKO (no, z wyjątkiem tego jednego fragmentu) Spędziłem DAYS w tej sprawie ... MY FREAKIN BÓG !! DZIĘKUJEMY !!!! –
@jewelsea dlaczego getter jest wywoływany dwa razy? i więcej niż obiekt osoby? – UnKnown
Przepraszam Nieznany, nie rozumiem, o co pytasz. Możesz zadać nowe pytanie. – jewelsea