如何检测MenuButton何时在Javafx中打开其菜单?

时间:2013-08-18 17:10:04

标签: javafx-2 javafx

由于此控件中没有OnShowing事件(至少在Javafx 2.2中),并且无法访问基础菜单控件,因此我无法在此处填充动态菜单项。

我尝试使用OnAction事件,但它不会触发。

我尝试使用MenuButton中包含动态选项的菜单的OnShowing事件,但这也不会触发。

必须有某种方式,但我想不出任何方法。

1 个答案:

答案 0 :(得分:3)

在显示时添加动态菜单项可以这样:

@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();
}