我正在尝试使用JavaFX实现完整的新闻稿发布手势。我想将一个矩形从一个VBox拖到另一个。在目标VBox上发生的MOUSE_DRAG_RELEASED事件上,我试图将拖动的矩形添加为目标VBox的子级。
问题是,当我在目标VBox上释放鼠标时,矩形不会进入VBox内的预期位置,而是始终向右偏移固定距离。
import os
print(os.listdir("../input/celeba-dataset/img_align_celeba/img_align_celeba/"))
我发现,即使拖动的矩形的视觉表示在放下时似乎偏移了,实际上还是向目标VBox添加了一个子对象(可以看到,因为VBox的边框在MOUSE_DRAG_RELEASED事件)。 可能是什么问题?
答案 0 :(得分:0)
在鼠标手势期间,您可以修改节点的translateX
/ translateY
属性。这导致拖动的节点通过此变换从新的父对象放置它的位置偏移。您需要重置这些值以将节点正确添加到VBox
的底部:
targetVBox.setOnMouseDragReleased(event -> {
targetVBox.getChildren().add(sourceDisk);
// reset translate values
sourceDisk.setTranslateX(0);
sourceDisk.setTranslateY(0);
});