所以我希望能够只选择 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/