Вы используете подстановочные знаки для аргументов типа для каждого TableColumn
. Затем позже аргументы типа вашего PropertyValueFactory
выводятся как Object
. Другими словами, у вас есть:
TableColumn<?, ?> col = ...;
col.setCellValueFactory(new PropertyValueFactory<Object, Object>("..."));`
И в этом заключается проблема: Object != ?
. Вы должны заменить символы подстановки настоящими типами. Например:
// all type arguments are just a guess based on field name
@FXML TableColumn<Stock, LocalDate> colStockTakeBy;
@FXML TableColumn<Stock, Number> colNumberOfPurple;
@FXML TableColumn<Stock, Number> colNumberOfGold;
@FXML TableColumn<Stock, LocalDate> colDate;
Первый аргумент типа должен соответствовать аргументу типа TableView
, которому принадлежит TableColumn
. Второй тип аргумента должен быть типом, который будут отображать ячейки этого столбца.
В качестве отступления, в этом методе:
private void showMessage() {
//check if there are any empty fields
JOptionPane.showMessageDialog(null,"Please Check For Empty Fields");
}
Вы используете класс из Swing API: JOptionPane
. За исключением случаев, когда это абсолютно необходимо, избегайте смешивания различных наборов инструментов пользовательского интерфейса. В противном случае это добавляет ненужную сложность и может привести к трудным для диагностики ошибкам. Вместо этого вы должны использовать эквивалентный JavaFX API - см. Alert
.
private void showMessage() {
Alert alert = new Alert(AlertType.ERROR);
alert.initOwner(tblStockTake.getScene().getWindow());
alert.setHeaderText(null);
alert.setContentText("Please check for empty fields.");
alert.showAndWait();
}