如何在特定区域禁用鼠标事件

How to disable mouse events over a certain area

因此,我拥有的是一个较大窗格内的较小窗格,而我想要做的是 enable/disable 对该较小窗格上的鼠标事件进行任何处理。这在理论上可以通过将较小窗格及其所有子窗格的鼠标事件设置为 null,然后稍后恢复它们来完成。但这很乏味,我想知道是否有更简单的方法。

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

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

EventHandler<MouseEvent> handler = MouseEvent::consume;

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

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

smallPane.removeEventFilter(MouseEvent.ANY, handler);

这样您就可以禁用鼠标事件,而不是 KeyEvents 等...

您可以只禁用该窗格:

smallPane.setDisable(true);

这也将禁用它的任何子节点。 (请参阅 documentation,其中显示 "Setting disable to true will cause this Node and any subnodes to become disabled.")。

要再次启用它,只需执行

smallPane.setDisable(false);