【发布时间】:2017-02-01 15:39:09
【问题描述】:
我希望每次更新菜单的子项,然后再展开菜单。 这是我尝试过的:
@FXML javafx.scene.control.Menu menu;
public void initiallize(){
// ...
this.menu.setOnAction((event) -> {
this.menu.getItems().clear();
this.menu.getItems().add(new MenuItem("Hello"));
this.menu.getItems().add(new MenuItem("World"));
this.menu.getItems().add(new MenuItem("!!!!!"));
});
}
接近但不正确。更新仅在单击该项目后发生。菜单可能会扩展但具有旧值。试用setOnShown() 代替
setOnAction() 也无法正常工作,因为在显示时已为时已晚,无法更新。
如何解决这个问题?
编辑 1:
这似乎有效:
this.menu.getParentMenu().setOnShowing((event) -> {
this.menu.getItems().clear();
this.menu.getItems().add(new MenuItem("Hello"));
this.menu.getItems().add(new MenuItem("World"));
this.menu.getItems().add(new MenuItem("!!!!!"));
});
这是最好的方法还是有更好的解决方案(不访问 ParentMenu)?
【问题讨论】: