Java JTree expandPath适用于文件,但不适用于包装类
我想知道是什么要求使得Java JTree expandPath适用于文件,但不适用于包装类,java,swing,tree,jtree,Java,Swing,Tree,Jtree,我想知道是什么要求使得JTree正常工作。我已经编写了一些代码,显示了一个文件系统树,然后调用expandPath()来展开其中的路径 当我使用文件对象时,一切正常,但树显示每个节点上的完整路径。因此,我将其包装在一个类中,该类更改了toString(),因此只显示dir/filename,但现在expandPath()不再工作,路径也不会展开 package tools.controls.TreeControl.Filesystem; import java.io.File; import
JTree
正常工作。我已经编写了一些代码,显示了一个文件系统树,然后调用expandPath()
来展开其中的路径
当我使用文件对象时,一切正常,但树显示每个节点上的完整路径。因此,我将其包装在一个类中,该类更改了toString()
,因此只显示dir/filename,但现在expandPath()
不再工作,路径也不会展开
package tools.controls.TreeControl.Filesystem;
import java.io.File;
import java.net.URI;
public class TreeFile
extends File
implements Cloneable
, Comparable<File>
{
private static final long serialVersionUID = 1L;
public TreeFile(TreeFile oOther)
{
super(oOther.getParentFile(), oOther.getName());
}
public TreeFile(File oFile)
{
super(oFile.getParentFile(), oFile.getName());
}
public TreeFile(String oPath)
{
super(oPath);
}
public TreeFile(URI oFileURL)
{
super(oFileURL);
}
public TreeFile(String oParent, String oChild)
{
super(oParent, oChild);
}
public TreeFile(File oParent, String oChild)
{
super(oParent, oChild);
}
public TreeFile getParentTreeFile()
{
File f = getParentFile();
if(f == null)
return null;
return new TreeFile(f);
}
public String toString()
{
return getName();
}
public TreeFile clone()
{
return new TreeFile(this);
}
@Override
public int compareTo(File oObject)
{
return super.compareTo(oObject);
}
}
包tools.controls.TreeControl.Filesystem;
导入java.io.File;
导入java.net.URI;
公共类树文件
扩展文件
可克隆的
可比较的
{
私有静态最终长serialVersionUID=1L;
公共树文件(树文件oOther)
{
super(oOther.getParentFile(),oOther.getName());
}
公共树文件(文件的文件)
{
super(oFile.getParentFile(),oFile.getName());
}
公共树文件(字符串oPath)
{
super(oPath);
}
公共树文件(URI oFileURL)
{
超级(oFileURL);
}
公共树文件(字符串不透明、字符串赭色)
{
超级(乳白色、赭色);
}
公共树文件(文件不透明,字符串oChild)
{
超级(乳白色、赭色);
}
公共树文件getParentTreeFile()
{
文件f=getParentFile();
如果(f==null)
返回null;
返回新树文件(f);
}
公共字符串toString()
{
返回getName();
}
公共树文件克隆()
{
返回新树文件(此文件);
}
@凌驾
公共整数比较(文件对象)
{
返回super.compareTo(ooobject);
}
}
“当我使用文件对象时,一切正常,但树显示每个节点上的完整路径。因此…”。请使用专门为文件制作的TreeCellRenderer
!请参见示例。这将是一个值得研究的问题。尽管如此,我还是想理解为什么它不起作用,我的课堂上缺少了什么,以至于树接受了它?因为这是一种完全可笑的方式,我对研究它一点也不感兴趣。祝你好运!请提供一份报告,以便我们也能重现您的行为。@AndrewThompson,如果您能解释一下我的方法有什么问题,而不是发表这样不友好的评论,那就太好了。不过,您对cell渲染器的评论让我走上了正确的方向,现在它可以正常工作了,谢谢。这种方法看起来好多了,尽管我仍然想知道为什么我的第一次尝试没有成功。