是否有可能在特定的 JavaFX节点上以及在其周围的边缘区域内捕获鼠标事件?如果是,我该怎么做?
例如,我想在右键单击JavaFX setOnContextMenuRequested()
或其边缘区域(以像素为单位)时调用Node
方法。
P.S。如果你的建议是使用边距大小作为我的节点的父节点的透明节点,我不能这样做。因为我的节点实际上是一个lineChart
点,它将通过线路自动连接到其他点。在这种情况下,此透明节点将在线与连接到它的点之间形成间隙。
答案 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上找到了这个代码,特别感谢贡献这段代码的人。