【问题标题】:How to disable mouse events over a certain area如何在某个区域禁用鼠标事件
【发布时间】:2018-03-08 23:23:42
【问题描述】:

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

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

【问题讨论】:

  • pane.setDisable(true)?
  • 这行得通吗?会很棒
  • 为什么不行?
  • idk 让我试试
  • 似乎有效。谢谢匿名

标签: java javafx mouseevent


【解决方案1】:

您可以禁用窗格:

smallPane.setDisable(true);

这也将禁用它的任何子节点。 (请参阅documentation,其中说“将禁用设置为 true 将导致此 Node 和任何子节点被禁用。”)。

要再次启用它,只需执行此操作

smallPane.setDisable(false);

【讨论】:

    【解决方案2】:

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

    EventHandler<MouseEvent> handler = MouseEvent::consume;
    
    // block events
    smallPane.addEventFilter(MouseEvent.ANY, handler);
    

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

    smallPane.removeEventFilter(MouseEvent.ANY, handler);
    

    这样你只禁用鼠标事件,而不是KeyEvents,等等......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多