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