01/10/2018, 14:20
Trigger ObservableList's change event from contained elements
Chào các bạn,
Mình có class Person
mà object của nó là element của ObservableList<Person> list
. list
là data của tableView
. Câu hỏi của mình là: Làm sao để update tableView
khi thay đổi giá trị của field của Person
.
Class Person:
public class Person {
private final SimpleStringProperty name = new SimpleStringProperty("");
private final DoubleProperty height = new SimpleDoubleProperty();
public Person() {
}
public Person(String name, double height) {
this.setName(name);
this.setHeight(height);
}
public void setName(String name) {
this.name.set(name);
}
public void setHeight(double height) {
this.height.set(height);
}
public DoubleProperty getHeightProperty() {
return height;
}
}
client sử dụng Person:
public class SuperModelController {
private TableView<Person> tableView;
private ObservableList<Person> list = FXCollections.observableArrayList();
@FXML
public void initialize() {
Person ngocTrinh = new Person("Ngoc Trinh", 1.5);
Person baTung = new Person("Ba Tung", 1.6);
Person minhHang = new Person("Minh Hang", 1.5);
ngocTrinh.getHeightProperty().addListener(c->{
// Trigger data list change event to update tableView
// Thuc ra tableView nam o 1 client khac su dung list
});
list.addAll(
ngocTrinh, baTung, minhHang
);
tableView.setItems(list);
}
public void addPerson(String name, double height) {
list.add(new Person(name, height));
}
public void modifyPerson(int index, String name, double height) {
list.get(index).setName(name);
list.get(index).setHeight(height);
}
}
Mình viết caption TA vì mình từ học code bằng sách TA nên cũng chưa quen viết các thuật ngữ này bằng TV. Mong các bạn thông cảm.
Bài liên quan
tableView.refresh();
?Như này tức là
SuperModelController
hoặcPerson
phải có reference tớitableView
.Liệu có làm đc cách giống như sau trong javafx không bác:
Cảm ơn bác.
Javafx: Detect ALL changes made to tableView including addition/deletion of table rows and cell edits on any table rows
cái này chắc giống nè, ngâm cứu đi
Extractor khi khởi tạo list:
Listen to add, update, delete, replace events
Set tableView Sync with list:
Chuẩn luôn. Cảm ơn bá