TreeItem是否支持拖放?

Tim*_*mst 7 drag-and-drop javafx javafx-2

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

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

我错过了什么,或者TreeItems不支持拖放事件了吗?

Tim*_*mst 7

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;
        }
    });
Run Code Online (Sandbox Code Playgroud)

如果他想声称自己的声誉或在他的解决方案中添加信息,我会改变这个答案.

  • 你有没有写过这是如何实现的?很想看到一些功能代码.干杯! (2认同)