如何定义鼠标事件的边缘区域?

时间:2017-01-16 14:02:52

标签: javafx event-handling mouseevent contextmenu linechart

是否有可能在特定的 JavaFX节点上以及在其周围的边缘区域内捕获鼠标事件?如果是,我该怎么做?

例如,我想在右键单击JavaFX setOnContextMenuRequested()或其边缘区域(以像素为单位)时调用Node方法。

P.S。如果你的建议是使用边距大小作为我的节点的父节点的透明节点,我不能这样做。因为我的节点实际上是一个lineChart点,它将通过线路自动连接到其他点。在这种情况下,此透明节点将在线与连接到它的点之间形成间隙。

1 个答案:

答案 0 :(得分: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");
                }
            }
        }
    });

上面代码中定义的区域位于节点的右下角。

顺便说一下:如果我记得很清楚,我很久以前就在stackoverflow上找到了这个代码,特别感谢贡献这段代码的人。