Bu Yapının, JTree
varsayalım ebeveyn/çocuk olarak aynı klasör klasör yapısını/alt klasörü göstermeye çalışıyorum:
ancak nasıl mücadele ediyorum Çocukları ana düğüme eklemek için, Computerscience adında bir ana klasörüm var, tüm alt klasörlerini alıyorum ve bunları alt öğe olarak ekledim, bu alt öğelerden herhangi biri, içlerinde daha fazla alt klasör olduğunda ana baba olabilir, özyinelemeye ihtiyacım var gibi görünüyor işlev ancak bunu yapamıyorum, işte yaptığım şey:
import java.awt.BorderLayout;
import java.io.File;
import java.util.Arrays;
import javax.swing.JFrame;
import static javax.swing.JFrame.EXIT_ON_CLOSE;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
public class TestTree extends JFrame {
JTree tree;
DefaultTreeModel treeModel;
public TestTree() {
super("Tree Test Example");
setSize(400, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
protected String[] getListFiles(String Path) {
File file = new File(Path);
String[] names = file.list();
return names;
}
public void init() {
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Computerscience");
String[] names = this.getListFiles("C:\\Users\\neginn\\Google Drive\\NetBeansProjects\\computerscience");
for (String name : names) {
root.add(new DefaultMutableTreeNode(name));
String[] names_level_2 = this.getListFiles("C:\\Users\\neginn\\Google Drive\\NetBeansProjects\\computerscience\\" + name);
if (names_level_2 != null) {
for (String name_level2 : names_level_2) {
int folder_index = Arrays.asList(names_level_2).indexOf(name_level2);
treeModel.insertNodeInto(root, (DefaultMutableTreeNode) root.getChildAt(folder_index), folder_index);
}
}
}
treeModel = new DefaultTreeModel(root);
tree = new JTree(treeModel);
getContentPane().add(tree, BorderLayout.CENTER);
}
public static void main(String args[]) {
TestTree tt = new TestTree();
tt.init();
tt.setVisible(true);
}
}
benim sorunum treeModel.insertNodeInto
Bu düğümleri yinelemeli olarak eklemeniz gerekir; addNodes (Node parent) ... alt dosya adlarını al ... parent.add (child) ... eğer çocuk varsa ... addNodes (çocuk) –