如何列出从路径到树的文件和文件夹?
How to list files and folders from path to tree?
我试过该代码将目录列出到树
我设置name = "D:/folder"
文件夹目录有很多文件和文件夹
但我得到的结果是一个名称为(文件夹)的节点
public class tree {
JTree tree;
DefaultMutableTreeNode node1;
DefaultMutableTreeNode temp;
DefaultMutableTreeNode temp2;
DefaultTreeModel model;
String name = new currentfolder().getInitial(); // path to directory that its
// content appear in tree
public tree() {
tree = new JTree();
node1 = new DefaultMutableTreeNode(name);
temp = node1;
import_data(new File(name));
temp.setParent(node1);
model = new DefaultTreeModel(node1);
tree.setModel(model);
model.reload();
tree.setOpaque(false);
tree.setBorder(javax.swing.BorderFactory.createCompoundBorder(
new javax.swing.border.SoftBevelBorder(
javax.swing.border.BevelBorder.RAISED),
javax.swing.BorderFactory.createTitledBorder("")));
tree.setVisible(true);
}
public void import_data(File file) {
if (file.isFile()) {
temp2 = new DefaultMutableTreeNode(file.getName());
temp2.setParent(temp);
return;
} else {
if (file.isDirectory()) {
if (!file.getName().equals(name)) {
temp2 = new DefaultMutableTreeNode(file.getName());
temp2.setParent(temp);
temp = temp2;
}
File[] f = file.listFiles();
for (int i = 0; i < f.length; i++) {
import_data(f[i]);
}
}
}
}
那我该如何解决呢?
如果有针对该代码的修复会更好,否则会以另一种方式列出到树
要将节点添加到树中,您需要调用DefaultMutableTreeNode.add
(temp.add(temp2)
)。调用 setParent()
不会将节点添加到树中。
你还需要修改import_data
,让它接受两个参数:目录的File
和目录对应的DefaultMutableTreeNode
。
我试过该代码将目录列出到树
我设置name = "D:/folder"
文件夹目录有很多文件和文件夹
但我得到的结果是一个名称为(文件夹)的节点
public class tree {
JTree tree;
DefaultMutableTreeNode node1;
DefaultMutableTreeNode temp;
DefaultMutableTreeNode temp2;
DefaultTreeModel model;
String name = new currentfolder().getInitial(); // path to directory that its
// content appear in tree
public tree() {
tree = new JTree();
node1 = new DefaultMutableTreeNode(name);
temp = node1;
import_data(new File(name));
temp.setParent(node1);
model = new DefaultTreeModel(node1);
tree.setModel(model);
model.reload();
tree.setOpaque(false);
tree.setBorder(javax.swing.BorderFactory.createCompoundBorder(
new javax.swing.border.SoftBevelBorder(
javax.swing.border.BevelBorder.RAISED),
javax.swing.BorderFactory.createTitledBorder("")));
tree.setVisible(true);
}
public void import_data(File file) {
if (file.isFile()) {
temp2 = new DefaultMutableTreeNode(file.getName());
temp2.setParent(temp);
return;
} else {
if (file.isDirectory()) {
if (!file.getName().equals(name)) {
temp2 = new DefaultMutableTreeNode(file.getName());
temp2.setParent(temp);
temp = temp2;
}
File[] f = file.listFiles();
for (int i = 0; i < f.length; i++) {
import_data(f[i]);
}
}
}
}
那我该如何解决呢?
如果有针对该代码的修复会更好,否则会以另一种方式列出到树
要将节点添加到树中,您需要调用DefaultMutableTreeNode.add
(temp.add(temp2)
)。调用 setParent()
不会将节点添加到树中。
你还需要修改import_data
,让它接受两个参数:目录的File
和目录对应的DefaultMutableTreeNode
。