【问题标题】:Selecting only leafs in JTree在 JTree 中只选择叶子
【发布时间】:2013-12-05 00:42:01
【问题描述】:

所以我希望能够只选择 JTree 中的叶子。网上有一些解决方案,但对多选无效...

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

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

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

【问题讨论】:

    标签: java swing jtree treenode


    【解决方案1】:

    修好了!

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

    }

    【讨论】:

      猜你喜欢
      • 2016-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多