首页 > 解决方案 > JTree - Java Swing中仅处理树会扩展但不会扩展树选择

问题描述

我正在为我的应用程序进行延迟加载。我希望一个节点仅加载用户单击它的图标。关键是我不知道该节点是否有子节点。我的临时解决方案是定义一个有子节点的节点,然后根据选择事件加载它们,我不使用树将扩展事件以进行延迟加载。我有什么方法可以实现 treeWillExpand 事件。您可以在TreeWillExpanListenerTreeExpandEventDemo2中引用。

标签: javaswingjtree

解决方案


// Have a tree with some unexpanded root items
// When an item is expanded, add some children
tree.addListener(new Tree.ExpandListener() {

    public void nodeExpand(ExpandEvent event) {
        // No children for the first node
        if (!hasChildren(event.getItemId())) {
            tree.setChildrenAllowed(event.getItemId(), false);

        } else {
            // Add a few new child nodes to the expanded node

                tree.addItem(childId);
                tree.setParent(childId, event.getItemId());


        }
    }
});

您可以实现 hasChildren 以根据正在扩展的树节点找到子节点,然后找到子节点并添加


推荐阅读