2017-09-05 118 views
1

我想在鼠標移動到屏幕邊緣時顯示(加載)菜單,並在鼠標離開屏幕邊緣時隱藏(移除)屏幕。我正試圖實現這個視頻https://www.youtube.com/watch?v=5GsdaZWDcdY(前進6分鐘)中看到的內容。JavaFX當鼠標移動到屏幕邊緣時顯示菜單

當Welcome.fxml屏幕沒有位於屏幕邊緣的孩子時,它工作正常。但是,當鼠標移過任何子節點時,它將停止讀取StackPane上的X,Y座標(基數)。我不能使用鼠標透明,因爲有些子節點是需要使用鼠標事件的按鈕。

感謝任何可以幫助我實現這一目標的建議或參考資料。謝謝。


公共類主要擴展應用{

StackPane base = new StackPane(); 

@Override 
public void start(Stage stage) throws Exception { 
    Parent root = FXMLLoader.load(getClass().getResource("Welcome.fxml")); 
    base.getChildren().add(root); 
    Scene scene = new Scene(base); 
    stage.setScene(scene); 
    stage.show(); 

    VBox menu = FXMLLoader.load(getClass().getResource("Menu.fxml")); 

    base.setOnMouseMoved((event) -> { 
     if (event.getScreenX() < 40) { 
      if (!base.getChildren().contains(menu)) { 
       base.getChildren().add(menu); 
       base.setAlignment(menu, Pos.TOP_LEFT); 
      } 
     } else { 
      if (base.getChildren().contains(menu)) { 
       base.getChildren().remove(menu); 
      } 
     } 
    }); 
} 

回答

1

你有沒有嘗試過的事件過濾器?

base.addEventFilter(MouseEvent.MOUSE_MOVED, e -> { 
    //Do your processing 
}); 

事件過濾器應該是第一個獲取事件。

相關問題