由于此控件中没有 OnShowing 事件(至少在 Javafx 2.2 中),并且无法访问底层菜单控件,因此我无法在此处填充动态菜单项。
我尝试使用 OnAction 事件,但它没有触发。
我尝试在包含动态选项的 MenuButton 内使用菜单的 OnShowing 事件,但这也不会触发。
一定有什么办法,但我想不出任何办法。
在显示时添加动态菜单项可以这样:
@Override
public void start(Stage stage) throws Exception {
final MenuButton m = new MenuButton("Cities");
m.getItems().addAll(new MenuItem("Moscow"), new MenuItem("Bishkek"), new MenuItem("Istanbul"));
m.showingProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
if(newValue) {
m.getItems().add(new MenuItem("new city item"));
}
}
});
StackPane stackPane = new StackPane();
stackPane.getChildren().add(m);
Scene scene = new Scene(stackPane);
stage.setScene(scene);
stage.show();
}