Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 仅选择JTree中的叶_Java_Swing_Jtree_Treenode - Fatal编程技术网

Java 仅选择JTree中的叶

Java 仅选择JTree中的叶,java,swing,jtree,treenode,Java,Swing,Jtree,Treenode,所以我想在JTree中只选择叶子。网上有一些解决方案,但它们不适用于多选 我希望找到当用户单击节点时触发的代码部分,并修改该部分以满足我的需要 我在DefaultTreeCeleditor中找到了一个侦听器,但该代码似乎适用于一次只选择一个节点的情况 底线是,在哪里可以找到代码,当单击节点时,该代码决定是否选择它,以及是否取消选择所有其他选定节点?修复了它 public class LeafOnlyTreeSelectionModel extends DefaultTreeSelectionMo

所以我想在JTree中只选择叶子。网上有一些解决方案,但它们不适用于多选

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

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

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

修复了它

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));
}
公共类LeafOnlyReelectionModel扩展了DefaultTreeSelectionModel
{
私有静态最终长serialVersionUID=1L;
专用树路径[]扩展路径(树路径[]扩展路径)
{
ArrayList路径=新的ArrayList();
for(int i=0;i
}修复了它

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));
}
公共类LeafOnlyReelectionModel扩展了DefaultTreeSelectionModel
{
私有静态最终长serialVersionUID=1L;
专用树路径[]扩展路径(树路径[]扩展路径)
{
ArrayList路径=新的ArrayList();
for(int i=0;i
}