2013-08-18 48 views
2

因爲這個控件中沒有OnShowing事件(至少在Javafx 2.2中),並且沒有辦法訪問底層的菜單控件,所以我找不到在這裏填充動態菜單項的方法。如何檢測MenuButton何時在Javafx中打開它的菜單?

我嘗試使用OnAction事件,但它不會觸發。

我嘗試使用包含動態選項的MenuButton內的菜單的OnShowing事件,但也不會觸發。

必須有某種方式,但我想不出任何。

回答

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

是的,它的作品!非常感謝你。也許他們決定在將來更容易找到setOnShowing方法,但此解決方案目前運行良好。謝謝。 – betaman

相關問題