从不同的控制器添加新数据时如何更新表视图

How to make tableview update when new data is added from a different controller

我有两个控制器,一个控制器有一个列出所有 members 的 table 视图,另一个控制器允许添加 member。添加 member 时,我无法更新 table。我使用了两个已经给我的模型,所以我没有改变模型中的任何东西。

每个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

的Controller
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,可以在单击菜单按钮后设置舞台。问题是,每当我设置一个阶段时,我都会使用 Club 模型的一个新实例,而不是使用 getKiosk()。我将所有新的 Club()```` 更改为 getClub()``` 现在一切正常。