如何在某个区域禁用鼠标事件

时间:2018-03-08 23:23:43

标签: java javafx mouseevent

所以我所拥有的是一个较大的Pane中较小的Pane,我想要做的是启用/禁用对该较小窗格的鼠标事件的任何处理。理论上,这可以通过将较小窗格及其所有子窗口的鼠标事件设置为 null ,然后再恢复它们来完成。但这很乏味,我想知道是否有更简单的方法。

我可以在较小的窗格上设置一个透明窗格,以便"捕获"鼠标点击该区域?任何建议表示赞赏。顺便说一下,我在javafx工作。

2 个答案:

答案 0 :(得分:1)

您只需停用该窗格:

smallPane.setDisable(true);

也将禁用其任何子节点。 (请参阅documentation,其中说明"将禁用设置为true将导致此Node和所有子节点被禁用。")。

要再次启用它,只需执行

smallPane.setDisable(false);

答案 1 :(得分:0)

smallPane使用事件过滤器并使用smallPane及其后代的鼠标事件:

EventHandler<MouseEvent> handler = MouseEvent::consume;

// block events
smallPane.addEventFilter(MouseEvent.ANY, handler);

重新启用以后可以删除事件过滤器

smallPane.removeEventFilter(MouseEvent.ANY, handler);

这样您只能禁用鼠标事件,而不是KeyEvent s,等等......