Java 如何在JFrame中创建一个JTree,显示NetBeans中的特定目录?

Java 如何在JFrame中创建一个JTree,显示NetBeans中的特定目录?,java,netbeans,jframe,jtree,Java,Netbeans,Jframe,Jtree,例如,如果我想让JTree显示我桌面上的文件,那么如何使用表单编辑器在NetBeans中显示这些文件? 谢谢你的帮助 如何在JFrame中创建一个JTree,显示NetBeans中的特定目录 这是一个基本的例子。在文本字段中输入目录名,然后按Enter键: import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; import javax.swing.tree.*; import jav

例如,如果我想让JTree显示我桌面上的文件,那么如何使用表单编辑器在NetBeans中显示这些文件?
谢谢你的帮助

如何在JFrame中创建一个JTree,显示NetBeans中的特定目录

这是一个基本的例子。在文本字段中输入目录名,然后按Enter键:

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;

public class TreeFileSystem extends JPanel
    implements ActionListener, TreeWillExpandListener, TreeSelectionListener
{
    private int fileIndex;

    private JTree tree;
    private DefaultTreeModel model;

    private JTextField textField;

    public TreeFileSystem()
    {
        super(new BorderLayout());

        textField = new JTextField("..\\");
        textField.addActionListener( this );
        add(textField, BorderLayout.NORTH);

        tree = new JTree( new DefaultMutableTreeNode() );
        JScrollPane scrollPane = new JScrollPane( tree );
        add(scrollPane);

        tree.addTreeWillExpandListener( this );
        tree.addTreeSelectionListener(this);
    }

    public void actionPerformed(ActionEvent e)
    {
        File file = new File( textField.getText() );

        if (file.exists())
        {
            DefaultMutableTreeNode root = new DefaultMutableTreeNode( file );
            model = new DefaultTreeModel( root );
            addNodes(root, true);
            tree.setModel( model );
        }
    }

    private void addNodes(DefaultMutableTreeNode root, boolean addChildNodes)
    {
        File file = (File)root.getUserObject();

        if (!file.isDirectory()) return;

        File[] files = file.listFiles();

        if (files == null) return;

        int directoryInsert = 0;

        for (int i = 0; i < files.length; i++)
        {
            file = files[i];
            DefaultMutableTreeNode node = new MyDefaultMutableTreeNode( file );

            if (file.isDirectory())
                root.insert(node, directoryInsert++);
            else
                root.insert(node, i);

            if (addChildNodes)
                addNodes(node, false);
        }
    }

    public void treeWillExpand(TreeExpansionEvent e) throws ExpandVetoException
    {
        if (tree.hasBeenExpanded(e.getPath())) return;

        TreePath path = e.getPath();

        if (path.getPathCount() == 2) return;

        DefaultMutableTreeNode node = (DefaultMutableTreeNode)path.getPathComponent( path.getPathCount() - 1);
        addNodes(node, false);
    }

    public void treeWillCollapse(TreeExpansionEvent e) {}


    public void valueChanged(TreeSelectionEvent e)
    {
        final DefaultMutableTreeNode root = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();

        if (root == null) return;


        ActionListener al = new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                File file = new File("file" + fileIndex++);
                System.out.println(file);
                DefaultMutableTreeNode node = new MyDefaultMutableTreeNode(file);
//              root.insert(node, 0);
//              model.reload(root);
import java.awt.*;
导入java.awt.event.*;
导入java.io.*;
导入javax.swing.*;
导入javax.swing.tree.*;
导入javax.swing.event.*;
公共类树文件系统扩展了JPanel
实现ActionListener、TreeWireExpandListener、TreeSelectionListener
{
私有int文件索引;
私有JTree树;
私有DefaultTreeModel模型;
私有JTextField textField;
公共树文件系统()
{
超级(新边框布局());
textField=新的JTextField(“…\ \”);
textField.addActionListener(这个);
添加(文本字段,BorderLayout.NORTH);
tree=newjtree(newdefaultmutabletreenode());
JScrollPane scrollPane=新的JScrollPane(树);
添加(滚动窗格);
addTreeWillExpandListener(this);
addTreeSelectionListener(这个);
}
已执行的公共无效操作(操作事件e)
{
File File=新文件(textField.getText());
if(file.exists())
{
DefaultMutableTreeNode root=新的DefaultMutableTreeNode(文件);
模型=新的DefaultTreeModel(根);
addNodes(root,true);
tree.setModel(model);
}
}
私有void addNodes(DefaultMutableTreeNode根,布尔addChildNodes)
{
File File=(File)root.getUserObject();
如果(!file.isDirectory())返回;
File[]files=File.listFiles();
如果(files==null)返回;
int directoryinstert=0;
对于(int i=0;i
查看Andrew的