Java Swing TreeModelListener handle tree model event
import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTree; import javax.swing.event.TreeModelEvent; import javax.swing.event.TreeModelListener; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; class MyTreeModelListener implements TreeModelListener { public void treeNodesChanged(TreeModelEvent e) { DefaultMutableTreeNode node; node = (DefaultMutableTreeNode) (e.getTreePath().getLastPathComponent()); try {/*from ww w. j ava2 s . c om*/ int index = e.getChildIndices()[0]; node = (DefaultMutableTreeNode) (node.getChildAt(index)); } catch (NullPointerException exc) { } System.out.println("New value: " + node.getUserObject()); } public void treeNodesInserted(TreeModelEvent e) { System.out.println(e); } public void treeNodesRemoved(TreeModelEvent e) { System.out.println(e); } public void treeStructureChanged(TreeModelEvent e) { System.out.println(e); } } public class Main { public static void main(String args[]) { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root"); JTree tree = new JTree(root); DefaultTreeModel treeModel = new DefaultTreeModel(root); treeModel.addTreeModelListener(new MyTreeModelListener()); treeModel.insertNodeInto(new DefaultMutableTreeNode("A"), root, 0); root.add(new DefaultMutableTreeNode("B")); root.add(new DefaultMutableTreeNode("C")); JScrollPane scrollPane = new JScrollPane(tree); frame.add(scrollPane, BorderLayout.CENTER); frame.setSize(300, 150); frame.setVisible(true); } }