このコントロールには 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();
}