Drag and drop TreeItem是否支持拖放?

Drag and drop TreeItem是否支持拖放?,drag-and-drop,javafx,javafx-2,Drag And Drop,Javafx,Javafx 2,我目前正在使用一个代表文件系统的JavaFx-2 我想启用以允许移动操作,但它似乎不包括拖动事件侦听器。我只能在englobing TreeView对象上实现拖放,但它不适用于子项 我是否遗漏了一些内容,或者树状图还不支持拖放事件?Csh在Oracle论坛上回答的问题: 您必须在TreeCell上实现拖放 写一个这样的CellFactory: TreeView TreeView=new TreeView(); setCellFactory(新回调(){ @凌驾 公共TreeCell呼叫(Tree

我目前正在使用一个代表文件系统的JavaFx-2

我想启用以允许移动操作,但它似乎不包括拖动事件侦听器。我只能在englobing TreeView对象上实现拖放,但它不适用于子项


我是否遗漏了一些内容,或者树状图还不支持拖放事件?

Csh在Oracle论坛上回答的问题:

您必须在TreeCell上实现拖放

写一个这样的CellFactory:

TreeView TreeView=new TreeView();
setCellFactory(新回调(){
@凌驾
公共TreeCell呼叫(TreeView stringTreeView){
TreeCell TreeCell=新的TreeCell(){
受保护的void updateItem(字符串项,布尔值为空){
super.updateItem(项,空);
如果(项!=null){
setText(项目);
}
}
};
检测到treeCell.setOnDragDetected(新的EventHandler(){
@凌驾
公共无效句柄(MouseEvent MouseEvent){
}
});
返回树穴;
}
});

如果他想维护自己的声誉或在解决方案中添加信息,我将更改此答案。

由@Timst给出的答案是正确的,但您应该更改“updateItem”方法,因为在上述情况下,您将无法设置“TreeItem”的图形,并且树折叠将无法正常工作(不会清除子节点中的文本)

只需将方法更改为:

@Override
protected void updateItem(String item, boolean empty) {
    super.updateItem(item, empty);
    if (!empty && item != null) {
        setText(item);
        setGraphic(getTreeItem().getGraphic());
    }else{
        setText(null);
        setGraphic(null);
    }
}

你有没有写过这是如何实现的?希望看到一些功能代码。干杯作为文本拖放是一个非常糟糕的解决方案。我的节点是复杂的java对象,呈现为文本。
@Override
protected void updateItem(String item, boolean empty) {
    super.updateItem(item, empty);
    if (!empty && item != null) {
        setText(item);
        setGraphic(getTreeItem().getGraphic());
    }else{
        setText(null);
        setGraphic(null);
    }
}