Javafx PropertyValueFactory не заполняет Tableview

Это немного озадачило меня, и я не могу понять его. Я использую Cell Value Factory для заполнения простой таблицы столбцов, и она не заполняется в таблице.

Он делает, и я щелкаю по заполняемым строкам, но я не вижу в них значений – в этом случае значения String. [Я только что отредактировал это, чтобы яснее]

У меня есть другой проект, в рамках которого он работает под такой же моделью данных. Что я делаю не так?

Вот код. Прокомментированный код в конце, похоже, работает. Я проверил, есть ли обычные ошибки – создание нового экземпляра столбца или нового экземпляра tableview. Ничего. Пожалуйста помоги!


// Простая модель данных 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а MainGuiController.java

  private ObservableList data; @FXML private TableView stockTableView;// = new TableView(data); @FXML private TableColumn 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("stockTicker")); stockTableView.setItems(data); } /*THIS, ON THE OTHER HAND, WORKS*/ /*Callback<CellDataFeatures, ObservableValue> cellDataFeat = new Callback<CellDataFeatures, ObservableValue>() { @Override public ObservableValue call(CellDataFeatures p) { return new SimpleStringProperty(p.getValue().getstockTicker()); } };*/ 

Как исправить

Случай с вашими методами getter и setter неверен.

getstockTicker должен быть getStockTicker

setstockTicker должен быть setStockTicker

Некоторая справочная информация

Свойство PropertyValueFactory остается неизменным:

 new PropertyValueFactory("stockTicker") 

Соглашение об именах будет казаться более очевидным, если вы также добавите аксессуар свойств в свой class Stock:

 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); } public StringProperty stockTickerProperty() { return stockTicker; } } 

PropertyValueFactory использует рефлексию для поиска соответствующих аксессуаров. Сначала он попытается использовать accessTickerProperty аксессуар, и, если нет, то отпадает назад к геттерам и сеттерам. Рекомендуется предоставить аксессуар свойств, так как вы автоматически включите свою таблицу для наблюдения за свойством в базовой модели, динамически обновляя ее в качестве базовых изменений модели.

поместите метод Getter и Setter в ваш class данных для всех элементов.

  • Проверка столкновения фигур с JavaFX
  • Как использовать SDK JavaFX 2 в Eclipse?
  • JavaFX ImageView без сглаживания
  • Как создать и показать общий диалог (ошибка, предупреждение, подтверждение) в JavaFX 2.0?
  • включая значок в автономное приложение JavaFX (.exe)
  • Проектирование заставки (java)
  • Копируемый ярлык / TextField / LabeledText в JavaFX
  • Доступ к classу controllerа FXML
  • JavaFX открыть новое окно
  • Как добавить маркер значения в диаграмму JavaFX?
  • Как сбросить индикатор прогресса между задачами в JavaFX2?
  • Давайте будем гением компьютера.