我有一个关于在 JavaFX 中填充 TableViews 的问题。首先,我是javaFX的新手,对我的无知感到抱歉。
我做了一个简单的例子来试试 tableview 是如何工作的:
public class Person{
private StringProperty firstName, lastName;
private IntegerProperty age;
//Left the constructor and getters out
}
对于控制器:
public class Controller implements Initializable {
@FXML private TableView tableView;
@FXML private TableColumn firstNameColumn, lastNameColumn, ageColumn;
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
ObservableList<Person> data = FXCollections.observableArrayList();
tableView.setItems(data);
firstNameColumn.setCellFactory(new PropertyValueFactory<Person, String>("firstName"));
lastNameColumn.setCellValueFactory(new PropertyValueFactory<Person, String>("lastName"));
ageColumn.setCellValueFactory(new PropertyValueFactory<Person, Integer>("age"));
data.add(new Person("Piet", "Jansen", 22));
}
}
这很好用,但是如果每个人都有一个包含名字和姓氏的 Name 对象怎么办?
例如:
public class Person{
private Name name;
private IntegerProperty age;
//Left the constructor and getters out
}
名称类:
public class Name {
private StringProperty firstName, lastName;
public Name(String firstName, String lastName) {
this.firstName = new SimpleStringProperty(firstName);
this.lastName = new SimpleStringProperty(lastName);
}
public String getFirstName() {
return firstName.get();
}
public StringProperty firstNameProperty() {
return firstName;
}
public String getLastName() {
return lastName.get();
}
public StringProperty lastNameProperty() {
return lastName;
}
}
提前致谢:)