java - 仅选择 JTree 中的叶子节点

标签 java swing jtree treenode

所以我希望能够只选择 JTree 中的叶子。网上有一些解决方案,但它们不适用于多项选择...

我想要的是找到当用户单击节点时触发的代码部分并修改该部分以满足我的需要。

我在 DefaultTreeCellEditor 中找到了一个监听器,但该代码似乎适用于一次仅选择一个节点的情况...

底线是,我在哪里可以找到代码,当单击节点时,决定是否选择它,以及是否取消选择所有其他选定的节点?

最佳答案

已修复!

public class LeafOnlyTreeSelectionModel extends DefaultTreeSelectionModel
{
private static final long serialVersionUID = 1L;

private TreePath[] augmentPaths(TreePath[] pPaths)
{
    ArrayList<TreePath> paths = new ArrayList<TreePath>();

    for (int i = 0; i < pPaths.length; i++)
    {
        if (((DefaultMutableTreeNode) pPaths[i].getLastPathComponent()).isLeaf())
        {
            paths.add(pPaths[i]);
        }
    }

    return paths.toArray(pPaths);
}

@Override
public void setSelectionPaths(TreePath[] pPaths)
{
    super.setSelectionPaths(augmentPaths(pPaths));
}

@Override
public void addSelectionPaths(TreePath[] pPaths)
{
    super.addSelectionPaths(augmentPaths(pPaths));
}

}

关于java - 仅选择 JTree 中的叶子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20389178/

相关文章:

JFrame 不同类中的 Java JTable

java - 我如何实现新的 JFrame 功能

java - 更改 JOptionPane 和 JFrame 标题栏字体

java - JTree model.nodechanged(Node) 丢失数据

java - 如何设置JTree "ctrl"选择模式始终启用

java - 自定义 Maven 插件和库

java - 如何在Java中以全精度格式化 double ?

java - 如何更改 ExecutorService 中的线程名称?

java - 在表/树表上搜索按键

java - Apache Thrift 中的对称加密 (AES)