Javafx - 子节点和父节点鼠标事件

时间:2014-07-17 16:09:32

标签: events javafx parent nodes

我有一个更大的Pane(Parent),我已经添加了另一个较小的Pane(Child)。我想拖动子窗格而不拖动父窗格(即仅在子节点上注册鼠标事件而不在父节点上注册)。 我们怎样才能最好地实施呢?

1 个答案:

答案 0 :(得分:0)

我设法找到解决问题的方法。

在父窗格中:我使用了mouseEvent.isControlDown() - 所以我使用crtl + mousebutton向下拖动窗格。

在Child Pane中:我使​​用了!mouseEvent.isControlDown()。因此,控制键盘用于确定事件的哪个部分有效。

父母是这样的:

        node.addEventFilter(
            MouseEvent.MOUSE_PRESSED,
            new EventHandler<MouseEvent>() {
                public void handle(final MouseEvent mouseEvent) {
                    if (mouseEvent.isControlDown()) {

                        // remember initial mouse cursor coordinates
                        // and node position
                        dragContext.mouseAnchorX = mouseEvent.getSceneX();
                        dragContext.mouseAnchorY = mouseEvent.getSceneY();
                        dragContext.initialTranslateX
                        = node.getTranslateX();
                        dragContext.initialTranslateY
                        = node.getTranslateY();
                    }
                }
            });

孩子这样:

    node.addEventFilter(
            MouseEvent.MOUSE_PRESSED,
            new EventHandler<MouseEvent>() {
                public void handle(final MouseEvent mouseEvent) {
                    if (!mouseEvent.isControlDown()) {
                        dragContext.mouseAnchorX = mouseEvent.getSceneX();
                        dragContext.mouseAnchorY = mouseEvent.getSceneY();
                        dragContext.initialTranslateX
                        = node.getTranslateX();
                        dragContext.initialTranslateY
                        = node.getTranslateY();
                    }
                }
            });