2017-01-16 10 views
0

Можно ли фиксировать события мыши на определенном JavaFX узла, а также внутри маргинальной зоны вокруг него? Если да, как я могу это сделать?Как определить маргинальную область для событий мыши?

Например, я хочу вызвать метод setOnContextMenuRequested(), когда щелчок правой кнопкой мыши по JavaFX Node или его предельной области (в пикселях).

P.S. Если ваше предложение заключается в использовании прозрачного узла с размером поля в качестве родителя моего узла, я не могу этого сделать. Поскольку мой узел фактически является точкой lineChart, которая автоматически соединяется с другими через линии. В этом случае этот прозрачный узел сделает промежуток между линией и точкой, связанной с ней.

+0

Единственный способ, которым я могу думать, это обработать «onMouseClicked» родителя и проверить границы/столкновение. – Itai

ответ

0

Я не уверен, если это то, что вы точно просили, но, возможно, это поможет вам:

yourNodeHere.setOnMouseClicked(new EventHandler<MouseEvent>() { 
     @Override 
     public void handle(MouseEvent event) { 
      if(event.getButton() == MouseButton.SECONDARY) { 
       //Define the clickable area 
       if(event.getX() > primaryStage.getWidth() - 50 
        && event.getX() < primaryStage.getWidth() 
        && event.getY() > primaryStage.getHeight() - 50 
        && event.getY() < primaryStage.getHeight()) { 

        //Define your action for the clickable area 
        System.out.println("Mouse is in clickable area"); 

       } else { 
        //Define your action for the non-clickable area 
        System.out.println("Mouse is in non-clickable area"); 
       } 
      } 
     } 
    }); 

Область, определяемая в коде выше, в правом нижнем углу узла.

Btw: Если я хорошо помню, я нашел этот код где-то на stackoverflow давным-давно, поэтому особое спасибо человеку, который внес этот код.

 Смежные вопросы

  • Нет связанных вопросов^_^