LifeOnNet
LifeOnNet

Reputation: 107

How to catch JTree node expanded event

I seek for a way in SWING JTree similar to SWT's TreeNode.addListener(SWT.Expand, new Listener()... I managed to check for last selected node to find selected one, but how may I find which node was expanded and handle it in a proper way?

Upvotes: 0

Views: 2019

Answers (1)

milez
milez

Reputation: 2201

Use the (funny named) TreeWillExpandListener.

TreeWillExpandListener treeWillExpandListener = new TreeWillExpandListener() {
      public void treeWillCollapse(TreeExpansionEvent treeExpansionEvent)
          throws ExpandVetoException {

        TreePath path = treeExpansionEvent.getPath();
        DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent();

        //Print the name of the node if toString() was implemented
        String data = node.getUserObject().toString();
        System.out.println("WillCollapse: " + data);

      }

      public void treeWillExpand(TreeExpansionEvent treeExpansionEvent) throws ExpandVetoException {

        TreePath path = treeExpansionEvent.getPath();
        DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent();

        //print the name of the node if toString was implemented  
        String data = node.getUserObject().toString();
        System.out.println("WillExpand: " + data);

      }
    };

tree.addTreeWillExpandListener(treeWillExpandListener);

Upvotes: 3

Related Questions