首页 > 解决方案 > 从不同控制器添加新数据时如何更新表格视图

问题描述

我有两个控制器,一个控制器有一个列出所有控制器的表格视图,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 显示添加的成员,但它只显示模型中已添加的成员。

标签: javafxtableviewfxml

解决方案


我想通了,我有一个 ClubController,它在单击菜单按钮后设置舞台。问题是,每当我设置舞台时,我都会使用俱乐部模型的新实例,而不是使用 getKiosk()。我将所有新的 Club()``` 更改为 getClub()```,现在一切正常。


推荐阅读