【问题标题】:Is drag and drop supported by TreeItem?TreeItem 是否支持拖放?
【发布时间】:2012-06-28 10:39:05
【问题描述】:

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

我想启用drag and drop 以允许移动操作,但看起来TreeItem 不包括拖动事件侦听器。我只能在 englobing TreeView 对象上实现拖放,但它不适用于子项目。

是我遗漏了什么,还是 TreeItems 还不支持拖放事件?

【问题讨论】:

    标签: drag-and-drop javafx javafx-2


    【解决方案1】:

    Csh 在 Oracle 论坛上回答的问题:https://forums.oracle.com/forums/message.jspa?messageID=10426066#10426066

    您必须在 TreeCell 上实现拖放。

    像这样写一个 CellFactory:

    TreeView<String> treeView = new TreeView<String>();
        treeView.setCellFactory(new Callback<TreeView<String>, TreeCell<String>>() {
            @Override
            public TreeCell<String> call(TreeView<String> stringTreeView) {
                TreeCell<String> treeCell = new TreeCell<String>() {
                    protected void updateItem(String item, boolean empty) {
                        super.updateItem(item, empty);
                        if (item != null) {
                            setText(item);
                        }
                    }
                };
    
                treeCell.setOnDragDetected(new EventHandler<MouseEvent>() {
                    @Override
                    public void handle(MouseEvent mouseEvent) {
    
                    }
                });
    
                return treeCell;
            }
        });
    

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

    【讨论】:

    • 你有没有写过这是如何实现的?很想看到一些功能代码。干杯!
    • 作为文本拖放是一个非常糟糕的解决方案。我的节点是复杂的 java 对象,呈现为文本。
    【解决方案2】:

    @Timst 的答案是正确的,但是您应该更改“updateItem”方法,因为在上述情况下您将无法设置“TreeItem”的图形并且树崩溃将无法正常工作(赢了t 清除子节点中的文本)。

    只需将方法更改为:

    @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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-11
      • 2015-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多