我非常沮丧,尝试了很多次来实现这个但还没有成功。 当用户更改按钮时,我试图更改 javafx 表 raw 的特定值。假设如果表的特定原始值为 10,那么如果用户按下按钮,该值将更改为 20,但我该怎么做呢? 但这个简单的技术在 java swing 中却非常容易。请帮助我在 javafx 中做同样的事情。
您不直接更新
TableCell
的值。相反,修改底层数据模型值。
查看当您调用
List<>
时要传递给 TableView
的 tableView.setItems()
类型。这就是您要更新的数据类型。
例如,假设您有一个
TableView<Person>
,其中包含 List
个 Person
对象:
public class Person {
private final StringProperty name = new SimpleStringProperty();
private final StringProperty email = new SimpleStringtProperty();
public Person (String name, String email) {
this.name.set(name);
this.email.set(email);
}
public String getName() {
return name.get();
}
public StringProperty nameProperty() {
return name;
}
public void setName(String name) {
this.name.set(name);
}
public String getEmail() {
return email.get();
}
public StringProperty emailProperty() {
return email;
}
public void setEmail(String email) {
this.email.set(email);
}
}
所以你有了你的
List<Person>
并且你已经用它来填充你的 TableView
:
tableView.setItems(FXCollections.observableArrayList(persons));
现在,当您的用户单击
Button
或您想要用新值更新 TableView
时,您将更新 Person
对象:
person.setEmail("[email protected]");
一旦该属性发生更改,
TableView
将更新以反映新值。
这是一个高级概述/示例。