从不同的控制器添加新数据时如何更新表视图
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()``` 现在一切正常。
我有两个控制器,一个控制器有一个列出所有 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
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()``` 现在一切正常。