Mi sto insegnando come lavorare con le proprietà JavaFX all'interno di TableView e sto avendo problemi con alcuni tipi di proprietà. Ho un persona oggetto che contiene due proprietàProprietà JavaFX in TableView
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;
}
}
Una volta creati da obiettivo è quello di utilizzare questo oggetto in un TableView. Ho creato le due colonne della tabella in questo modo.
TableColumn<Person, String> firstNameColumn = new TableColumn<Person, String>("First Name");
TableColumn<Person, Integer> ageColumn = new TableColumn<Person, Integer>("Age");
Quindi, desidero impostare il valore di cella factory utilizzando espressioni Lambda. Questo è dove sorge il problema. StringProperty firstName funziona perfettamente. Tuttavia, l'IntegerProperty mi dà l'errore messaggio "Tipo non corrispondente: non può convertire da IntegerProperty
a ObservableValue<Integer>
"
firstNameColumn.setCellValueFactory(cellData -> cellData.getValue().firstNameProperty());
ageColumn.setCellValueFactory(cellData -> cellData.getValue().ageProperty());
Qualcuno può far luce su ciò che sta andando male con l'ageColumn.setCellValueFactory (...)? Qualsiasi aiuto sarebbe molto apprezzato.
Grazie!
Che ha funzionato grande. Grazie per la rapida risposta e chiarimenti. –
Ho fatto esattamente lo stesso esempio di Matt, un nuovo progetto solo per capirlo. Bene, ora funziona. Grazie James_D – HoNgOuRu