2017-01-16 77 views
0

是否有可能一個特定的JavaFX節點上捕捉鼠標事件,也內邊緣區域身邊呢?如果是,我該怎麼辦?如何定義鼠標事件的邊緣區域?

例如,當JavaFX Node或其邊緣區域(以像素爲單位)被右鍵單擊時,我想調用setOnContextMenuRequested()方法。

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"); 
       } 
      } 
     } 
    }); 

在上面的代碼中定義的區域是在節點的右下角。

順便說一句:如果我記得很清楚,我發現這個代碼在某處計算器很久以前,所以特別感謝誰貢獻這個代碼的人。