JTree如何展开与收缩是否要自己注册监听事件,然后再事件处理过程中填代码进行处理

解决方案 »

  1.   

    如果让用户操作JTree来控制展开与收缩,你不用写代码;如果你想要由程序自动控制展开或收缩,就要写程序了。
      

  2.   

    JTree的展开和折叠是它自己内部的事,无需手动处理。
    创建一棵Jtree非常简单,以下为JTree的简单示例。
    至于其他构造方法可以参看API文档。
    JTree常用的用法还有给JTree添加右键弹出菜单,遍历JTree等,可以自行搜索。import java.awt.Dimension;import javax.swing.BoxLayout;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTree;public class JTreeDemo {
    public static void main(String[] args) { // 简单构造函数:返回带有示例模型的 JTree
    JTree tree = new JTree(); JPanel panel = new JPanel();
    panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
    panel.setPreferredSize(new Dimension(400, 400));
    panel.add(new JScrollPane(tree)); // JTree必须放在JScrollPane上 JFrame frame = new JFrame("JTreeDemo");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setContentPane(panel);
    frame.pack();
    frame.setVisible(true);
    }
    }
      

  3.   

    我这边有一个。可以展开节点的
    private void expandAllNode(JTree tree, TreePath parent, boolean expand) {
    // Traverse children
    TreeNode node = (TreeNode) parent.getLastPathComponent();
    if (node.getChildCount() >= 0) {
    for (Enumeration<?> e = node.children(); e.hasMoreElements();) {
    TreeNode n = (TreeNode) e.nextElement();
    TreePath path = parent.pathByAddingChild(n);
    expandAllNode(tree, path, expand);
    }
    } if (expand) {
    tree.expandPath(parent);
    } else {
    tree.collapsePath(parent);
    }
    }调用的时候这样:
    expandAllNode(jTree, new TreePath(root), true);其中第二个参数如果是root,则展开树里面所有的节点,如果是其他某个节点,则展开这个节点下面所有的子节点及其下级节点。