JavaFX cố gắng để cho phép các MVC-Pattern. Mô hình sẽ được tạo với Thuộc tính để tận dụng lợi thế của Ràng buộc. Trong trường hợp của bạn, Model là lớp Person, vì vậy bạn chỉ cần thêm FirstName StringProperty. Nhưng trong JavaFX bạn phải chăm sóc các quy ước đặt tên khác như cho getter đơn giản và setter trong một Bean Pojo.
Naming Convention cho Properties trong JavaFX là:
public class Person {
private StringProperty firstName;
public void setFirstName(String value) { firstNameProperty().set(value); }
public String getFirstName() { return firstNameProperty().get(); }
public StringProperty firstNameProperty() {
if (firstName == null) firstName = new SimpleStringProperty(this, "firstName");
return firstName;
}
private StringProperty lastName;
public void setLastName(String value) { lastNameProperty().set(value); }
public String getLastName() { return lastNameProperty().get(); }
public StringProperty lastNameProperty() {
if (lastName == null) lastName = new SimpleStringProperty(this, "lastName");
return lastName;
}
}
Sau đó bạn có thể để ràng buộc ví dụ như một TableColumn của một TableView đến tài sản "LastName"
TableView<Person> table = new TableView<Person>();
ObservableList<Person> teamMembers = getTeamMembers();
table.setItems(teamMembers);
TableColumn<Person,String> lastNameCol = new TableColumn<Person,String>("Last Name");
lastNameCol.setCellValueFactory(new PropertyValueFactory("lastName"));
Nếu không có một tài sản này sẽ có nhiều mã hơn và bạn sẽ không có lợi thế khi triển khai hỗ trợ ChangeListener/InvalidationListener.
Ví dụ trên xuất phát từ JavaFX TableView
Vì vậy, cách khuyến khích trong việc đưa ra một mô hình cho JavaFX đang sử dụng JavaFX-Properties và không xây dựng trong các loại.
thẳng đến giải thích điểm !!! – JWizard