JTree.getModel().addTreeModelListener(new TreeModelListener()) : TreeModel « Swing « Java Tutorial






import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;
import javax.swing.event.TreeModelEvent;
import javax.swing.event.TreeModelListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;

public class Main {
  public static void main(String args[]) {
    JFrame f = new JFrame("JTree Demo");
    f.setSize(260, 240);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
    DefaultMutableTreeNode aNode = new DefaultMutableTreeNode("A");
    root.add(aNode);

    DefaultMutableTreeNode bNode = new DefaultMutableTreeNode("B");
    aNode.add(bNode);

    DefaultMutableTreeNode cNode = new DefaultMutableTreeNode("C");
    aNode.add(cNode);

    cNode.add(new DefaultMutableTreeNode("D"));
    cNode.add(new DefaultMutableTreeNode("E"));

    DefaultMutableTreeNode fNode = new DefaultMutableTreeNode("F");
    root.add(fNode);

    DefaultMutableTreeNode gNode = new DefaultMutableTreeNode("G");
    fNode.add(gNode);
    fNode.add(new DefaultMutableTreeNode("H"));
    gNode.add(new DefaultMutableTreeNode("I"));

    JTree jtree = new JTree(root);
    jtree.setEditable(true);

    TreeSelectionModel tsm = jtree.getSelectionModel();
    tsm.setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);

    jtree.addTreeExpansionListener(new TreeExpansionListener() {
      public void treeExpanded(TreeExpansionEvent tee) {
        TreePath tp = tee.getPath();
        System.out.println("Expansion: " + tp.getLastPathComponent());
      }

      public void treeCollapsed(TreeExpansionEvent tee) {
        TreePath tp = tee.getPath();
        System.out.println("Collapse: " + tp.getLastPathComponent());
      }
    });

    jtree.addTreeSelectionListener(new TreeSelectionListener() {
      public void valueChanged(TreeSelectionEvent tse) {
        TreePath tp = tse.getPath();
        System.out.println("Selection event: " + tp.getLastPathComponent());
      }
    });

    jtree.getModel().addTreeModelListener(new TreeModelListener() {
      public void treeNodesChanged(TreeModelEvent tme) {
        TreePath tp = tme.getTreePath();
        Object[] children = tme.getChildren();
        DefaultMutableTreeNode changedNode;
        if (children != null)
          changedNode = (DefaultMutableTreeNode) children[0];
        else
          changedNode = (DefaultMutableTreeNode) tp.getLastPathComponent();

        System.out.println("Model change path: " + tp + "New data: "
            + changedNode.getUserObject());

      }

      public void treeNodesInserted(TreeModelEvent tme) {
      }

      public void treeNodesRemoved(TreeModelEvent tme) {
      }

      public void treeStructureChanged(TreeModelEvent tme) {
      }
    });

    f.add(new JScrollPane(jtree));
    f.setVisible(true);
  }
}








14.68.TreeModel
14.68.1.Tree node editing with DefaultTreeModel
14.68.2.implements TreeModelimplements TreeModel
14.68.3.Genealogy Tree
14.68.4.JTree.getModel().addTreeModelListener(new TreeModelListener())
14.68.5.Expand All for a tree path
14.68.6.Get tree path from TreeNode