我理解中的树形结构大概是这样(不知道这样的图形是不是你想要的)
a
|
------------------
| | |
b cd
以下是代码,找了系统盘下子文件较少的文件夹 C:/Windows/AppPatch,当然也可以换成你自己的路径来测试
import java.io.File
public class FileTree {
/**
* @param args
*/
public static void main(String[] args) {
try{
File file = new File("C:\\Windows\\AppPatch")
if(file.isDirectory()){
String[] fileList = file.list()
String fileName = file.getName()
int allLength = 0
for(int i=0i<fileList.lengthi++){
allLength += (fileList[i]+" ").length()
}
for(int i=0i<allLength/2i++){
System.out.print(" ")
}
System.out.println(fileName)
for(int i=0i<allLength/2i++){
System.out.print(" ")
}
for(int i=0i<fileName.length()/2i++){
System.out.print(" ")
}
System.out.println("|")
for(int i=0i<allLengthi++){
System.out.print("-")
}
System.out.println("")
for(int i=0i<fileList.lengthi++){
int tmpLength = fileList[i].length()
int subLength = tmpLength/2
int lastLength = tmpLength - subLength - 1
for(int j=0j<subLengthj++){
System.out.print(" ")
}
System.out.print("|")
for(int j=0j<lastLengthj++){
System.out.print(" ")
}
System.out.print(" ")
}
System.out.println("")
for(int i=0i<fileList.lengthi++){
System.out.print(fileList[i]+" ")
}
}
else{
System.out.println("对不起,你提供的路径不是文件夹")
}
}
catch (Exception e) {
e.printStackTrace()
}
}
}
这时可以发现输出每一个子文件/子文件夹的名字已经比较长,要是再想输出这些子文件夹里面的文件,那幅图个人觉得相当纠结,也许是我水平没够吧或是我理解错了你说的树形结构
希望以上代码对你有帮助
可以仿照TreeView的类型,TreeView的Nodes属性是TreeNodeCollection类,public class TreeNodeCollection : IList, ICollection, IEnumerable,
所以你仿照这种结构建立你自己的类,同样实现这三种接口就行了。
建立一个tv_1控件long rows,i,cur_len,p
string mycode,str,myname,mylabel
long handle_current,h1
treeviewitem item
treeviewitem newitem
h1=tv_1.finditem(currenttreeitem!,0)
handle_current=tv_1.finditem(childtreeitem!,h1)
if handle_current<0 then
tv_1.getitem(h1,item)
mylabel=item.label
p=pos(mylabel,"--")
mycode=mid(mylabel,1,p - 1)
cur_len=len(mycode)
str="id like'"+mycode+"%'"
dw_1.setfilter(str)
dw_1.filter()
rows=dw_1.rowcount()
for i=1 to rows
mycode=dw_1.getitemstring(i,"no")
myname=dw_1.getitemstring(i,"name")
if len(mycode)=cur_len+2 then
newitem.label=mycode+"--"+myname
newitem.pictureindex=(cur_len+2)/2+1
newitem.selectedpictureindex=(cur_len+2)/2+2
tv_1.insertitemlast(h1,newitem)
end if
next
end if
tv_1.expanditem(h1)
return 0
再建立一个数据窗口,里面的数据库有两个字段,no和name
no字段例子:01第一层,0102第一层的第二个结点,0201第二层的第一个结点
主窗口的OPEN事件:(双击窗口任何位置,别点在控件上)
tv_1.insertitemlast(0,"根结点",1)
dw_1.settransobject(sqlca)
dw_1.retrieve()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)