JavaFX8,VBox DragEvent-为什么可以';t我选择VBox子项

JavaFX8,VBox DragEvent-为什么可以';t我选择VBox子项,javafx,drag-and-drop,java-8,focus,Javafx,Drag And Drop,Java 8,Focus,嘿,我现在正在写我的硕士论文,有一个问题,我找不到解决办法。 我希望有人知道我做错了什么 我创建了这个用户界面: 在这里,我试图将“Properties”中的元素设置为可拖动的,并将它们放到较低的TextFlow节点中。 拖放本身似乎已经起作用了。我用一个测试标签试过了 但由于某些原因,我无法在“属性”VBox中与子对象一起复制 我就是这样尝试的: private void fillScrollPane(Content content, ScrollPane scrollPane) {

嘿,我现在正在写我的硕士论文,有一个问题,我找不到解决办法。 我希望有人知道我做错了什么

我创建了这个用户界面:

在这里,我试图将“Properties”中的元素设置为可拖动的,并将它们放到较低的TextFlow节点中。 拖放本身似乎已经起作用了。我用一个测试标签试过了

但由于某些原因,我无法在“属性”VBox中与子对象一起复制

我就是这样尝试的:

 private void fillScrollPane(Content content, ScrollPane scrollPane) {
    Map<String, Object> map = content.getProperties();
    scrollPane.setPickOnBounds(false);
    VBox root = new VBox();
    scrollPane.setContent(root);

    for (String s : map.keySet()) {
        Object value = map.get(s);
        if (value == null || value.toString().equals("[]") || value.toString().equals(""))
            continue;
        Label t = new Label(s + " : " + value.toString() + "\n");
        t.setOnDragDetected((MouseEvent event) -> {
            Dragboard db = t.startDragAndDrop(TransferMode.MOVE);
            ClipboardContent clipboardContent = new ClipboardContent();
            // Store node ID in order to know what is dragged.
            clipboardContent.putString(t.getId());
            db.setContent(clipboardContent);
            event.consume();
        });

        root.getChildren().add(t);
    }

}
private void fillScrollPane(内容,滚动窗格){
Map Map=content.getProperties();
scrollPane.setPickOnBounds(false);
VBox root=新的VBox();
scrollPane.setContent(根目录);
对于(字符串s:map.keySet()){
对象值=map.get(s);
如果(value==null | | | value.toString().equals(“[]”| | value.toString().equals(“]))
继续;
标签t=新标签(s+”:“+value.toString()+”\n”);
t、 setOnDragDetected((MouseeEvent事件)->{
拖板db=t.startDragAndDrop(传输模式.移动);
ClipboardContent ClipboardContent=新的ClipboardContent();
//存储节点ID以了解所拖动的内容。
clipboardContent.putString(t.getId());
db.setContent(剪贴板内容);
event.consume();
});
root.getChildren().add(t);
}
}
但是,与其在VBox中拖动子对象,不如在鼠标单击时选择整个VBox

简言之: 秩序是这样的 场景->滚动窗格->VBox->标签 我想选择带有拖动事件的标签。直接在场景中使用它确实有效,但VBox不起作用


有人知道我需要改变什么吗

好的,我发现了,JavaFX不提供自动生成的id。没有它们,拖放似乎不起作用