JavaFX Propriétés dans TableView

J'apprends à travailler avec JavaFX des propriétés au sein de la TableView et éprouve de la difficulté avec certains types de biens. J'ai un objet Personne qui contient deux propriétés

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;
    }

}

Une fois créé par objectif est d'utiliser cet objet dans une TableView. J'ai créé les deux colonnes du tableau comme ceci.

TableColumn<Person, String> firstNameColumn = new TableColumn<Person, String>("First Name");
TableColumn<Person, Integer> ageColumn = new TableColumn<Person, Integer>("Age");

Je veux définir la valeur de la cellule d'usine en utilisant les expressions Lambda. C'est là que le problème se pose. Le StringProperty prénom fonctionne très bien. Cependant, la IntegerProperty me donne le message d'erreur "incompatibilité de Type: impossible de convertir de IntegerProperty à ObservableValue<Integer>"

firstNameColumn.setCellValueFactory(cellData -> cellData.getValue().firstNameProperty());
ageColumn.setCellValueFactory(cellData -> cellData.getValue().ageProperty());

Quelqu'un peut jeter un peu de lumière sur ce qui va mal avec la ageColumn.setCellValueFactory(...)? Toute aide serait grandement appréciée.

Merci!

InformationsquelleAutor Matt Perry | 2014-07-22