别的不好说,还没仔细看,是不是应该考虑后台的Model对象啊?

解决方案 »

  1.   

    displayData和managerData是两个Vector
      

  2.   

    这个是不是做WINDOWS里面的目录树?
      

  3.   

    不是做已有文件的目录树,是自己建的树,怎么说呢?
    就是和windows里面新建一个文件夹以后实时添加一个树的子节点差不多!!
      

  4.   

    找到一个例子程序,希望有帮助:import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.tree.*;
    import javax.swing.event.*;public class JTreeDemo extends JPanel implements ActionListener { private int newNodeSuffix = 1;
    private static String ADD_COMMAND = "add";
    private static String REMOVE_COMMAND = "remove";
    private static String CLEAR_COMMAND = "clear";
        
    private DynamicTree treePanel; public JTreeDemo() {
    super(new BorderLayout());
    treePanel = new DynamicTree();
    populateTree(treePanel);
    JButton addButton = new JButton("Add");
    addButton.setActionCommand(ADD_COMMAND);
    addButton.addActionListener(this);
    JButton removeButton = new JButton("Remove");
    removeButton.setActionCommand(REMOVE_COMMAND);
    removeButton.addActionListener(this);
    JButton clearButton = new JButton("Clear");
    clearButton.setActionCommand(CLEAR_COMMAND);
    clearButton.addActionListener(this);
    treePanel.setPreferredSize(new Dimension(300, 150));
    add(treePanel, BorderLayout.CENTER);
    JPanel panel = new JPanel(new GridLayout(0,1));
    panel.add(addButton);
    panel.add(removeButton);
    panel.add(clearButton);
    add(panel, BorderLayout.LINE_END);
    } public void populateTree(DynamicTree treePanel) {
    String p1Name = new String("Parent 1");
    String p2Name = new String("Parent 2");
    String c1Name = new String("Child 1");
    String c2Name = new String("Child 2");
    DefaultMutableTreeNode p1, p2;
    p1 = treePanel.addObject(null, p1Name);
    p2 = treePanel.addObject(null, p2Name);
    treePanel.addObject(p1, c1Name);
    treePanel.addObject(p1, c2Name);
    treePanel.addObject(p2, c1Name);
    treePanel.addObject(p2, c2Name);
    }
        
    public void actionPerformed(ActionEvent e) {
    String command = e.getActionCommand();
    if (ADD_COMMAND.equals(command)) {
    treePanel.addObject("New Node " + newNodeSuffix++);
    } else if (REMOVE_COMMAND.equals(command)) {
    treePanel.removeCurrentNode();
    } else if (CLEAR_COMMAND.equals(command)) {
    treePanel.clear();
    }
    } private static void createAndShowGUI() {
    JFrame.setDefaultLookAndFeelDecorated(true);
    JFrame frame = new JFrame("JTreeDemo");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JTreeDemo newContentPane = new JTreeDemo();
    newContentPane.setOpaque(true);
    frame.setContentPane(newContentPane);
    frame.pack();
    frame.setVisible(true);
    } public static void main(String[] args) {
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    createAndShowGUI();
    }
    });
    }
    }final class DynamicTree extends JPanel {
    protected DefaultMutableTreeNode rootNode;
    protected DefaultTreeModel treeModel;
    protected JTree tree;
    private Toolkit toolkit = Toolkit.getDefaultToolkit(); public DynamicTree() {
    super(new GridLayout(1,0));
    rootNode = new DefaultMutableTreeNode("Root Node");
    treeModel = new DefaultTreeModel(rootNode);
    treeModel.addTreeModelListener(new MyTreeModelListener());
    tree = new JTree(treeModel);
    tree.setEditable(true);
    tree.getSelectionModel().setSelectionMode
    (TreeSelectionModel.SINGLE_TREE_SELECTION);
    tree.setShowsRootHandles(true);
    JScrollPane scrollPane = new JScrollPane(tree);
    add(scrollPane);
    } public void clear() {
    rootNode.removeAllChildren();
    treeModel.reload();
    } public void removeCurrentNode() {
    TreePath currentSelection = tree.getSelectionPath();
    if (currentSelection != null) {
    DefaultMutableTreeNode currentNode = (DefaultMutableTreeNode)
     (currentSelection.getLastPathComponent());
    MutableTreeNode parent = (MutableTreeNode)(currentNode.getParent());
    if (parent != null) {
    treeModel.removeNodeFromParent(currentNode);
    return;
    }

    toolkit.beep();
    } public DefaultMutableTreeNode addObject(Object child) {
    DefaultMutableTreeNode parentNode = null;
    TreePath parentPath = tree.getSelectionPath();
    if (parentPath == null) {
    parentNode = rootNode;
    } else {
    parentNode = (DefaultMutableTreeNode)
     (parentPath.getLastPathComponent());
    }
    return addObject(parentNode, child, true);
    } public DefaultMutableTreeNode addObject(DefaultMutableTreeNode parent,
    Object child) {
    return addObject(parent, child, false);
    } public DefaultMutableTreeNode addObject(DefaultMutableTreeNode parent,
    Object child, 
    boolean shouldBeVisible) {
    DefaultMutableTreeNode childNode = 
    new DefaultMutableTreeNode(child);
    if (parent == null) {
    parent = rootNode;
    }
    treeModel.insertNodeInto(childNode, parent, 
     parent.getChildCount());
    if (shouldBeVisible) {
    tree.scrollPathToVisible(new TreePath(childNode.getPath()));
    }
    return childNode;
    } class MyTreeModelListener implements TreeModelListener {
    public void treeNodesChanged(TreeModelEvent e) {
    DefaultMutableTreeNode node;
    node = (DefaultMutableTreeNode)
     (e.getTreePath().getLastPathComponent());
    try {
    int index = e.getChildIndices()[0];
    node = (DefaultMutableTreeNode)
     (node.getChildAt(index));
    } catch (NullPointerException exc) {}
    System.out.println("The user has finished editing the node.");
    System.out.println("New value: " + node.getUserObject());
    }
    public void treeNodesInserted(TreeModelEvent e) {
    }
    public void treeNodesRemoved(TreeModelEvent e) {
    }
    public void treeStructureChanged(TreeModelEvent e) {
    }
    }
    }
      

  5.   

    因为用了TAB,格式贴出来有点难看,自己再贴一下吧。
      

  6.   

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.tree.*;
    import javax.swing.event.*;public class JTreeDemo extends JPanel implements ActionListener {  private int newNodeSuffix = 1;
      private static String ADD_COMMAND = "add";
      private static String REMOVE_COMMAND = "remove";
      private static String CLEAR_COMMAND = "clear";
        
      private DynamicTree treePanel;  public JTreeDemo() {
          super(new BorderLayout());
          treePanel = new DynamicTree();
          populateTree(treePanel);
          JButton addButton = new JButton("Add");
          addButton.setActionCommand(ADD_COMMAND);
          addButton.addActionListener(this);
          JButton removeButton = new JButton("Remove");
          removeButton.setActionCommand(REMOVE_COMMAND);
          removeButton.addActionListener(this);
          JButton clearButton = new JButton("Clear");
          clearButton.setActionCommand(CLEAR_COMMAND);
          clearButton.addActionListener(this);
          treePanel.setPreferredSize(new Dimension(300, 150));
          add(treePanel, BorderLayout.CENTER);
          JPanel panel = new JPanel(new GridLayout(0,1));
          panel.add(addButton);
          panel.add(removeButton);
          panel.add(clearButton);
          add(panel, BorderLayout.LINE_END);
      }  public void populateTree(DynamicTree treePanel) {
          String p1Name = new String("Parent 1");
          String p2Name = new String("Parent 2");
          String c1Name = new String("Child 1");
          String c2Name = new String("Child 2");
          DefaultMutableTreeNode p1, p2;
          p1 = treePanel.addObject(null, p1Name);
          p2 = treePanel.addObject(null, p2Name);
          treePanel.addObject(p1, c1Name);
          treePanel.addObject(p1, c2Name);
          treePanel.addObject(p2, c1Name);
          treePanel.addObject(p2, c2Name);
      }
        
      public void actionPerformed(ActionEvent e) {
          String command = e.getActionCommand();
          if (ADD_COMMAND.equals(command)) {
              treePanel.addObject("New Node " + newNodeSuffix++);
          } else if (REMOVE_COMMAND.equals(command)) {
              treePanel.removeCurrentNode();
          } else if (CLEAR_COMMAND.equals(command)) {
              treePanel.clear();
          }
      }  private static void createAndShowGUI() {
          JFrame.setDefaultLookAndFeelDecorated(true);
          JFrame frame = new JFrame("JTreeDemo");
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          JTreeDemo newContentPane = new JTreeDemo();
          newContentPane.setOpaque(true);
          frame.setContentPane(newContentPane);
          frame.pack();
          frame.setVisible(true);
      }  public static void main(String[] args) {
          javax.swing.SwingUtilities.invokeLater(new Runnable() {
              public void run() {
                  createAndShowGUI();
              }
          });
      }
    }final class DynamicTree extends JPanel {
        protected DefaultMutableTreeNode rootNode;
        protected DefaultTreeModel treeModel;
        protected JTree tree;
        private Toolkit toolkit = Toolkit.getDefaultToolkit();    public DynamicTree() {
            super(new GridLayout(1,0));
            rootNode = new DefaultMutableTreeNode("Root Node");
            treeModel = new DefaultTreeModel(rootNode);
            treeModel.addTreeModelListener(new MyTreeModelListener());
            tree = new JTree(treeModel);
            tree.setEditable(true);
            tree.getSelectionModel().setSelectionMode
                    (TreeSelectionModel.SINGLE_TREE_SELECTION);
            tree.setShowsRootHandles(true);
            JScrollPane scrollPane = new JScrollPane(tree);
            add(scrollPane);
        }    public void clear() {
            rootNode.removeAllChildren();
            treeModel.reload();
        }    public void removeCurrentNode() {
            TreePath currentSelection = tree.getSelectionPath();
            if (currentSelection != null) {
                DefaultMutableTreeNode currentNode = (DefaultMutableTreeNode)
                             (currentSelection.getLastPathComponent());
                MutableTreeNode parent = (MutableTreeNode)(currentNode.getParent());
                if (parent != null) {
                    treeModel.removeNodeFromParent(currentNode);
                    return;
                }
            } 
            toolkit.beep();
        }    public DefaultMutableTreeNode addObject(Object child) {
            DefaultMutableTreeNode parentNode = null;
            TreePath parentPath = tree.getSelectionPath();
            if (parentPath == null) {
                parentNode = rootNode;
            } else {
                parentNode = (DefaultMutableTreeNode)
                             (parentPath.getLastPathComponent());
            }
            return addObject(parentNode, child, true);
        }    public DefaultMutableTreeNode addObject(DefaultMutableTreeNode parent,
                                                Object child) {
            return addObject(parent, child, false);
        }    public DefaultMutableTreeNode addObject(DefaultMutableTreeNode parent,
                                                Object child, 
                                                boolean shouldBeVisible) {
            DefaultMutableTreeNode childNode = 
                    new DefaultMutableTreeNode(child);
            if (parent == null) {
                parent = rootNode;
            }
            treeModel.insertNodeInto(childNode, parent, 
                                     parent.getChildCount());
            if (shouldBeVisible) {
                tree.scrollPathToVisible(new TreePath(childNode.getPath()));
            }
            return childNode;
        }    class MyTreeModelListener implements TreeModelListener {
            public void treeNodesChanged(TreeModelEvent e) {
                DefaultMutableTreeNode node;
                node = (DefaultMutableTreeNode)
                         (e.getTreePath().getLastPathComponent());
                try {
                    int index = e.getChildIndices()[0];
                    node = (DefaultMutableTreeNode)
                           (node.getChildAt(index));
                } catch (NullPointerException exc) {}
                System.out.println("The user has finished editing the node.");
                System.out.println("New value: " + node.getUserObject());
            }
            public void treeNodesInserted(TreeModelEvent e) {
            }
            public void treeNodesRemoved(TreeModelEvent e) {
            }
            public void treeStructureChanged(TreeModelEvent e) {
            }
        }
    }