我有两个控制器,一个控制器具有列出所有members
的表格视图,另一个控制器允许添加member
。添加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显示添加的成员,但仅显示模型中已经添加的成员。
答案 0 :(得分:0)
我发现,我有一个ClubController,它可以在单击菜单按钮后设置舞台。问题在于,每当我设置一个舞台时,我都会使用新的teh Club模型实例而不是使用getKiosk()。我将所有新的Club()``更改为getClub()`,现在一切正常。