Javafx 2 如何在Javafx中检测菜单按钮何时打开其菜单?

Javafx 2 如何在Javafx中检测菜单按钮何时打开其菜单?,javafx-2,javafx,Javafx 2,Javafx,由于此控件中没有OnShowing事件(至少在JavaFX2.2中是这样),并且无法访问底层菜单控件,因此我无法在此处填充动态菜单项 我尝试使用OnAction事件,但它没有启动 我尝试在包含动态选项的菜单按钮中使用菜单的OnShowing事件,但也没有触发 一定有办法,但我想不出任何办法 在显示时添加动态菜单项的方法如下: @Override public void start(Stage stage) throws Exception { final MenuButton m = n

由于此控件中没有OnShowing事件(至少在JavaFX2.2中是这样),并且无法访问底层菜单控件,因此我无法在此处填充动态菜单项

我尝试使用OnAction事件,但它没有启动

我尝试在包含动态选项的菜单按钮中使用菜单的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();
}
@覆盖
public void start(Stage)引发异常{
最终菜单按钮m=新菜单按钮(“城市”);
m、 getItems().addAll(新MenuItem(“莫斯科”)、新MenuItem(“比什凯克”)、新MenuItem(“伊斯坦布尔”);
m、 showingProperty().addListener(新的ChangeListener()){
@凌驾

public void changed(observeValueYes,它很有效!非常感谢。也许他们决定在将来使用一种更容易找到的setOnShowing方法,但该解决方案目前运行良好。谢谢。