无法使用JavaFX在所需位置放置矩形

时间:2019-05-31 04:52:58

标签: java javafx

我正在尝试使用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事件)。 可能是什么问题?

1 个答案:

答案 0 :(得分:0)

在鼠标手势期间,您可以修改节点的translateX / translateY属性。这导致拖动的节点通过此变换从新的父对象放置它的位置偏移。您需要重置这些值以将节点正确添加到VBox的底部:

targetVBox.setOnMouseDragReleased(event -> {
    targetVBox.getChildren().add(sourceDisk);

    // reset translate values
    sourceDisk.setTranslateX(0);
    sourceDisk.setTranslateY(0);
});