1

Netbeans の GUI ビルダーを使用して JTree を作成しています。次のコードを使用して、ノードとすべてをツリーに追加できます。

public static void listAllFiles(String directory, DefaultMutableTreeNode parent, Boolean recursive) {
            File [] children = new File(directory).listFiles(); // list all the files in the directory
            for (int i = 0; i < children.length; i++) { // loop through each
                    DefaultMutableTreeNode node = new DefaultMutableTreeNode(children[i].getName());
                    // only display the node if it isn't a folder, and if this is a recursive call
                    if (children[i].isDirectory() && recursive) {
                            parent.add(node); // add as a child node
                            listAllFiles(children[i].getPath(), node, recursive); // call again for the subdirectory
                    } else if (!children[i].isDirectory()){ // otherwise, if it isn't a directory
                            parent.add(node); // add it as a node and do nothing else
                    }
            }
    }

それを次のように呼び出します

listAllFiles("C:\\test",  defaultMutableTreeNode , true);

このコードをinit()JTree のメソッドに追加して、ビルド時に Test フォルダーにすべてのフォルダーとファイルが含まれるようにしますが、実際にやりたいのは、ノードを JTree に追加することです。ボタンをクリックしますが、これを行う方法がわかりません! listAllFiles("C:\\test", defaultMutableTreeNode , true);新しいボタンのにを追加できActionPerformedますが、 が見つかりませんdefaultMutableTreeNode

では、これを行うにはどうすればよいでしょうか。DefaultMutableTreeNodeボタンをクリックするたびに新しいものを作成するのですか?

4

1 に答える 1

0

まあ、私はそれを行うための1つの方法を考え出しましたが、それが最善の方法であるかどうかはわかりません! 私は基本的に、ボタンの ActionPerformed に新しい DefaultMutableTreeNode を作成し、とにかくツリーを正しく作成しています

javax.swing.tree.DefaultMutableTreeNode treeNode1 = new javax.swing.tree.DefaultMutableTreeNode("root");
jTree.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1));
listAllFiles(folderPath,  treeNode1, true);

しかし、これを行うためのより良い方法があるかどうかを確認したいと思います...賢明なコーディング

于 2012-07-06T11:34:49.250 に答える