Я преподаю, как работать с свойствами JavaFX в TableView, и у меня возникают проблемы с некоторыми типами свойств. У меня есть объект Person, который содержит два свойства
public class Person {
private final StringProperty firstName;
private final IntegerProperty age;
public Person(String firstName, Integer age) {
this.firstName = new SimpleStringProperty(firstName);
this.age = new SimpleIntegerProperty(age);
}
public Integer getAge() {
return age.get();
}
public void setAge(Integer age) {
this.age.set(age);
}
public IntegerProperty ageProperty() {
return age;
}
public String getFirstName() {
return firstName.get();
}
public void setFirstName(String firstName) {
this.firstName.set(firstName);
}
public StringProperty firstNameProperty() {
return firstName;
}
}
После создания цели следует использовать этот объект в TableView. Я создал два столбца таблицы следующим образом.
TableColumn<Person, String> firstNameColumn = new TableColumn<Person, String>("First Name");
TableColumn<Person, Integer> ageColumn = new TableColumn<Person, Integer>("Age");
Затем я хочу установить значение ячейки factory, используя выражения Lambda. Здесь возникает проблема. StringProperty firstName работает отлично. Однако IntegerProperty дает мне сообщение об ошибке "Несоответствие типа: невозможно преобразовать из IntegerProperty
в ObservableValue<Integer>
"
firstNameColumn.setCellValueFactory(cellData -> cellData.getValue().firstNameProperty());
ageColumn.setCellValueFactory(cellData -> cellData.getValue().ageProperty());
Может ли кто-нибудь пролить свет на то, что не так с ageColumn.setCellValueFactory(...)? Любая помощь будет принята с благодарностью.
Спасибо!