所以我所拥有的是一个较大的Pane中较小的Pane,我想要做的是启用/禁用对该较小窗格的鼠标事件的任何处理。理论上,这可以通过将较小窗格及其所有子窗口的鼠标事件设置为 null ,然后再恢复它们来完成。但这很乏味,我想知道是否有更简单的方法。
我可以在较小的窗格上设置一个透明窗格,以便"捕获"鼠标点击该区域?任何建议表示赞赏。顺便说一下,我在javafx工作。
答案 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,等等......