Drag and drop TreeItem是否支持拖放?
我目前正在使用一个代表文件系统的JavaFx-2 我想启用以允许移动操作,但它似乎不包括拖动事件侦听器。我只能在englobing TreeView对象上实现拖放,但它不适用于子项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
我是否遗漏了一些内容,或者树状图还不支持拖放事件?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);
}
}