当前位置: 首页 > 知识库问答 >
问题:

TreeItem是否支持拖放?

於意蕴
2023-03-14

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

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

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

共有2个答案

令狐跃
2023-03-14

@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);
    }
}
冀嘉木
2023-03-14

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代码: JAXB是否可能? 曾经看到一些WebService Client存根生成器正在执行此操作,但也许不确定axis2 Webservice。 问题答案: 的 JAXB(JSR-222) 规范没有盖产生快速失败逻辑到域模型。现在,一种常见的做法是以注释(或XML)的形式表示验证规则,并对它们进行验证。 Bean验证(JSR-303) 对此进行了标

  • 问题内容: 我正在尝试执行一个简单的INSERT并返回标识(自动递增主键)。我试过了 我收到以下错误 SQLite是否支持SCOPE_IDENTITY? 如果可以,该如何使用? 如果不是,我(最好是“线程安全”)的替代方案是什么? 问题答案: 查看常见问题解答。该sqlite3_last_insert_rowid()函数将做到这一点。不过要小心触发器。

  • 我正在使用RDF4J工作台: 尽管我可以在github上的RDF4J存储库中看到对GeoSPARQL的引用,但目前似乎还没有实现。我在已清除的“带RDFS自旋支持的内存存储”存储库上运行了这个SPARQL更新查询,以在RDF4J工作台上设置测试: 这导致一个存储库具有一个事实。 现在,我尝试通过以下查询查找与文字多边形的重叠,该查询应该可以找到上面设置的一个事实: 此查询以HTML的形式给出了一个

  • 问题内容: 我想知道是否有任何方法可以在Java中实现。我认为,如果没有本地对闭包的支持,这是不可能的。 问题答案: Java 8(2014年3月18日发布)不支持curring。可以将Missingfaktor在答案中发布的示例Java代码重写为: …这是非常好的。就个人而言,有了Java 8,我几乎没有理由使用替代的JVM语言(例如Scala或Clojure)。当然,它们提供了其他语言功能,但

  • Spring Cloud库伯内特斯是否支持Spring Cloud负载均衡器? 我要在库伯内特斯上部署Spring启动应用程序,并通过以下链接执行客户端负载平衡功能区客户端https://cloud.spring.io/spring-cloud-static/spring-cloud-kubernetes/2.0.0.M1/reference/html/#ribbon-discovery-in-k

  • 这里是基于workerman实现的PHP版本的socket.IO。 项目: https://github.com/walkor/phpsocket.io 手册:https://github.com/walkor/phpsocket.io/tree/master/docs/zh