2017-09-05 16 views
1

マウスが画面の端に移動したときにメニューを表示(ロード)し、画面の端からマウスが離れるときに非表示(削除)したい画面。私はこのビデオに見られるものを達成しようとしていますhttps://www.youtube.com/watch?v=5GsdaZWDcdY(前方6分)。JavaFXマウスが画面の端に移動したときのメニューを表示

Welcome.fxml画面には、画面の端に子が配置されていないと正常に動作します。ただし、マウスが子ノードのいずれかに移動すると、StackPane(base)の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 
}); 

イベントフィルタはイベントを最初に取得する必要があります。

関連する問題