当前位置: 首页 > 知识库问答 >
问题:

没有子元素的stackPane JavaFX上的鼠标事件

温峻熙
2023-03-14

您好,当鼠标单击stackpane(父)时,我试图取消选择listview项。我尝试了这段代码,但当用户单击按钮(Stackpane的子项)时,事件仍然被触发:

stackPane.addEventFilter(MouseEvent.MOUSE_PRESSED, new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent mouseEvent) {
                listVisits.getSelectionModel().clearSelection();
            }
        });

如何仅触发stackpane鼠标事件单击?

共有2个答案

林德辉
2023-03-14

您可以使用MouseEventpickResult属性轻松区分案例。请注意,在这种情况下,不需要使用事件过滤器,允许使用事件处理程序,从而导致代码略短(当然,除非您需要将其设置为另一个值)。

stackPane.setOnMousePressed(evt -> {
    // only update selection, if the cursor doesn't hover a child
    if (evt.getPickResult().getIntersectedNode() == stackPane) {
        listVisits.getSelectionModel().clearSelection();
        evt.consume(); // don't pass the event to event handlers of ancestors (desired ?)
    }
});

请注意,如果您只想排除部分子项而不是全部子项,则可以使用事件处理程序为某些子项使用事件。如果执行此操作,则不再需要检查pickResult

eventBlockingChild.setOnMousePressed(MouseEvent::consume);
东门翰
2023-03-14

您不需要按下鼠标。替换为单击鼠标

stackPane.setOnMouseClicked(event -> {
     listVisits.getSelectionModel().clearSelection();
});
 类似资料:
  • 问题内容: 我正在尝试驱动类似于Google Maps的网络地图的一部分,在该地图上,通过鼠标悬停时的滚动来进行放大/缩小。理想情况下,我希望能够执行以下操作: 我在文档中看到的最接近的方法是和,但是这两个方法都不可以滚动。我也尝试通过Javascript将滚动条发送到页面,例如,这似乎没有任何作用。 我怎样才能做到这一点? 问题答案: 要重现/测试鼠标滚轮,您必须通过脚本注入将,和事件发送到顶部

  • 问题内容: 我正在尝试驱动类似于Google Maps的网络地图的一部分,在该地图上,放大/缩小是通过在鼠标悬停时滚动来完成的。理想情况下,我希望能够执行以下操作: 我在文档中看到的最接近的方法是和,但是这两个方法都不可以滚动。我也尝试过通过Javascript将滚动条发送到页面,例如,这似乎没有任何作用。 我怎样才能做到这一点? 问题答案: 要重现/测试鼠标滚轮,您必须使用脚本注入将,和事件发送

  • 问题内容: 当父元素悬停时如何更改子元素的样式。如果可能的话,我希望使用CSS解决方案。有没有可能通过:hover CSS选择器解决方案。实际上,当面板上悬停时,我需要更改面板内选项栏的颜色。 希望支持所有主流浏览器。 问题答案: 是的,您绝对可以做到这一点。只需使用类似 根据此页面,所有主流浏览器都支持该页面。

  • 问题内容: 是否可以在页面加载后使用JavaScript获取鼠标位置而没有任何鼠标移动事件(不移动鼠标)? 问题答案: 真正的答案:不,不可能。 好的,我刚刚想到了一种方法。用覆盖整个文档的div覆盖页面。在其中,创建(例如)2,000 x 2,000个元素(以便该伪类将在IE 6中运行),每个元素的大小为1像素。为那些更改属性的元素创建CSS 规则(比如说)。在您的负载处理程序中,循环浏览这40

  • 问题内容: 我试图捕获一个元素上有另一个绝对定位的元素上的鼠标事件。 现在,绝对定位元素上的事件将其击中并冒泡至其父对象,但我希望它对这些鼠标事件“透明”并将其转发到其背后的任何对象。我应该如何实施呢? 问题答案: 是一个CSS属性,它使事件“通过”应用它的元素,并使事件发生在元素“下面”。

  • 可以在没有预定义的光标样式的情况下获得当前的光标类型,就像鼠标通过文本、链接… 大概是这样的: 我想在控制台中记录光标的状态,如:指针、文本、移动、等待... 我在jQuery中找到了某种解决方案,但我想在纯香草JS中找到一个 谢谢你的回答