javafx - 从不同控制器添加新数据时如何更新表格视图
问题描述
我有两个控制器,一个控制器有一个列出所有控制器的表格视图,members
另一个控制器允许member
添加一个。添加a 时,我无法让表格更新member
。我使用了两个已经给我的模型,所以我不会更改模型中的任何内容。
每个member
都有一个id
和一个profession
,我cellValueFactory
用来列出members
. 我尝试添加listeners
这样的cellValueFactoryProperties
内容:
idColumn.cellValueFactoryProperty().addListener((obs, oldV, newV) -> memberTv.refresh());
但它仍然没有显示新members
带有 TableView 的控制器:
@FXML
TableColumn<Member, Integer> idColumn;
@FXML
TableColumn<Member, String> profColumn;
@FXML
TableView<Member> memberTv;
@FXML
private void initialize() {
memberTv.setItems(getClub().getMembers());
idColumn.setCellValueFactory(cellData -> new
ReadOnlyObjectWrapper(cellData.getValue().getId()));
profColumn.setCellValueFactory(cellData -> new
ReadOnlyStringWrapper(cellData.getValue().getProf()));
}
public final Club getClub() {
\\\returns Club model
}
添加的控制器members
private int getId() {
return Integer.parseInt(idTf.getText());
}
private void setId(String id) {
idTf.setText(id);
}
private String getProf() {
return profTf.getText();
}
private void setProf(String prof) {
profTf.setText("" + prof);
}
@FXML
public void handleAddMember(){
getClub().addMember(getId(), getProf());
}
当我添加成员时,我希望 TableView 显示添加的成员,但它只显示模型中已添加的成员。
解决方案
我想通了,我有一个 ClubController,它在单击菜单按钮后设置舞台。问题是,每当我设置舞台时,我都会使用俱乐部模型的新实例,而不是使用 getKiosk()。我将所有新的 Club()``` 更改为 getClub()```,现在一切正常。
推荐阅读
- c++ - 我应该如何表示我拥有的连续元素序列?
- javascript - 如何在 Angular 2 的同一服务中将一些硬编码数据与 API 一起使用?
- javascript - ouath 3 使用 facebook 在登录期间截断问号
- javascript - 用承诺解决游标
- javascript - 如何将 React.memo 与 react-redux 连接一起使用?
- r - 动态确定数据框列是否存在,如果存在则改变
- javascript - 绑定 each 语句
- java - 从 Apache Http POST 请求返回字符串(Android)
- r - 唯一值的排序和有序数据框
- google-chrome - 从 Chrome 网上应用店中删除非活动谷歌开发者帐户的扩展