Skip to Main Content

Java SE (Java Platform, Standard Edition)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

How to show only all children of selected node in JTree??

sunnycodeApr 7 2007 — edited Apr 24 2007
Dear friends:
I have Two Panels, PA and PB,
PA has a Jtree as code below, and PB listens to PA,
I hope to do following,
If I select a node called A in PA, then Node A's all children such as A1, A2, A3 will be displayed in PB, but not display A1, A2, A3's children such as A3 has C1, C2, C3, C4 & C5, until I select A3 then PB will display only all A3's children: C1, C2, C3, C4 & C5;
i.e, only populate each ONE level of children of Node A or any node I select, not its grandchildren and its grand-grand children;
Please help how to do it??

I tried amny times, failed.

Thanks

[1]. PA panel code:

package com.atest;


	import java.awt.BorderLayout;
	import java.awt.event.MouseAdapter;
	import java.awt.event.MouseEvent;
	import java.util.Enumeration;
	import java.awt.Dimension;
	import javax.swing.JFrame;
	import javax.swing.JPanel;
	import javax.swing.JScrollPane;
	import javax.swing.JTextField;
	import javax.swing.JTree;
	import javax.swing.tree.DefaultMutableTreeNode;
	import javax.swing.tree.TreeModel;
	import javax.swing.tree.TreePath;

	public class DefaultMutableTreeMain extends JPanel {
	protected DefaultMutableTreeNode    top = new DefaultMutableTreeNode("Options");
	protected DefaultMutableTreeNode 	selectedNode = null;
	protected final JTree tree;
	protected final JTextField jtf;
    protected Enumeration 	vEnum = null;
	private 	TreeModel	 		m;
	protected  DefaultMutableTreeNode 	getDefaultMutableTreeNode()  {
		//textArea.getText();
			return selectedNode;
		}
	protected  DefaultMutableTreeNode setDefaultMutableTreeNode(DefaultMutableTreeNode tt)  {
		//textArea.getText();
			selectedNode = tt;
			return selectedNode;
		}
	protected  TreeModel getJTModel()  {
		//textArea.getText();
			return m;
		}
	protected  TreeModel setJTModel(TreeModel ta)  {
			m = ta;
			return m;
	}		
	  public DefaultMutableTreeMain() {

	    setSize(300,300);
	    setLayout(new BorderLayout());


	    DefaultMutableTreeNode a = new DefaultMutableTreeNode("A");
	    top.add(a);
	    DefaultMutableTreeNode a1 = new DefaultMutableTreeNode("A1");
	    a.add(a1);
	    DefaultMutableTreeNode a2 = new DefaultMutableTreeNode("A2");
	    a.add(a2);
	    DefaultMutableTreeNode a3 = new DefaultMutableTreeNode("A3");
	    a.add(a3);

	    DefaultMutableTreeNode b = new DefaultMutableTreeNode("B");
	    top.add(b);
	    DefaultMutableTreeNode b1 = new DefaultMutableTreeNode("B1");
	    b.add(b1);
	    DefaultMutableTreeNode b2 = new DefaultMutableTreeNode("B2");
	    b.add(b2);
	    DefaultMutableTreeNode b3 = new DefaultMutableTreeNode("B3");
	    b.add(b3);

	    DefaultMutableTreeNode c = new DefaultMutableTreeNode("C");
	    a3.add(c);
	    DefaultMutableTreeNode c1 = new DefaultMutableTreeNode("C1");
	    c.add(c1);
	    DefaultMutableTreeNode c2 = new DefaultMutableTreeNode("C2");
	    c.add(c2);
	    DefaultMutableTreeNode c3 = new DefaultMutableTreeNode("C3");
	    c.add(c3);
	    DefaultMutableTreeNode c4 = new DefaultMutableTreeNode("C4");
	    c.add(c4);
	    DefaultMutableTreeNode c5 = new DefaultMutableTreeNode("C5");
	    c.add(c5);
	    tree = new JTree(top);

	    JScrollPane jsp = new JScrollPane(tree);
	    jsp.setPreferredSize(new Dimension(400,300));
	    add(jsp, BorderLayout.CENTER);

	    jtf = new JTextField("", 20);
	    add(jtf, BorderLayout.SOUTH);

      	  
		  
	      tree.addMouseListener(new MouseAdapter() {
	      public void mouseClicked(MouseEvent me) {
	    	TreePath   path = tree.getSelectionPath();
	    	DefaultMutableTreeNode 	selectedNode = (DefaultMutableTreeNode)path.getLastPathComponent();
	        TreePath tp = tree.getPathForLocation(me.getX(), me.getY());
	        setDefaultMutableTreeNode(selectedNode);
	       	System.out.println("Current node selected is (tp.toString()=" + tp.toString());
	       	System.out.println("Current node selected is getDefaultMutableTreeNode()=" + getDefaultMutableTreeNode());
	        if (tp != null){
	            jtf.setText(tp.toString());
	             System.out.println("It Has Children as selectedNode.getChildCount()= " + selectedNode.getChildCount());
		     	    Enumeration vEnum = selectedNode.children();
			    	    int i = 0;
			    	    while(vEnum.hasMoreElements()){
			        	    System.out.println("2 selectedNode = " +  path.toString() + "  has " + i++ + " Children in vEnum.nextElement(" + i + ") = " + vEnum.nextElement());
			       	    }
	        }
	        else
	          jtf.setText("");
	      }
	    });
 }

	  public static void main(String[] args) {
	    JFrame frame = new JFrame();
	    frame.getContentPane().add(new DefaultMutableTreeMain());

	    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	    frame.setSize(400, 400);
	    frame.setVisible(true);
	  }
	}
[2]. PB Panel code
package com.atest;


import java.awt.BorderLayout;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.JPanel;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.*; 
import javax.swing.JButton;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;


public class DefaultMutableTreeSub extends JPanel implements java.io.Serializable{

  private JButton removeButton;
  private JButton addButton;

  JTree tree;
  private TreeModel	 m;
  protected TreeDragSource ds;

  protected TreeDropTarget dt;

protected  TreeModel getJTModel()  {
		//textArea.getText();
			return m;
		}
protected  TreeModel setJTModel(TreeModel ta)  {
			m = ta;
			return m;
	}	

protected DefaultTreeModel model;

protected DefaultMutableTreeNode rootNode;
DefaultMutableTreeMain dmm = null;
JPanel inputPanel  = new JPanel();
  public JPanel SLTreeDNDEditableDynamic(DefaultMutableTreeMain tdnd ) {
    //super("Rearrangeable Tree");
    setSize(400,450);
    dmm = tdnd;
  
    	setLayout(new BorderLayout());

	    inputPanel.setLayout(new BorderLayout());
	    JPanel outputPanel = new JPanel();
	    System.out.println("Sub selectedNode tdnd= " + tdnd);

	    tdnd.tree.addTreeSelectionListener(new TreeSelectionListener(){
	    	public void valueChanged(TreeSelectionEvent evt){
	    	TreePath[] paths = evt.getPaths();
	    	TreePath   path = dmm.tree.getSelectionPath();
	    	DefaultMutableTreeNode 	selectedNode = (DefaultMutableTreeNode)path.getLastPathComponent();

	        DefaultMutableTreeNode itemNode = dmm.getDefaultMutableTreeNode();
	       	System.out.println("Sub node selected is dmm.getDefaultMutableTreeNode()=" + dmm.getDefaultMutableTreeNode());

		    model = new DefaultTreeModel(itemNode);
		    tree = new JTree(model);
		    System.out.println("Sub selectedNode paths= " + paths);
		    System.out.println("Sub selectedNode path= " + path);
		    System.out.println("Sub selectedNode = " + selectedNode);
		    System.out.println("Sub itemNode = " + itemNode);

		    tree.putClientProperty("JTree.lineStyle", "Angled");
		    
		    tree.setRootVisible(true);
	
			inputPanel.add(new JScrollPane(tree),BorderLayout.CENTER);
	
		   	}
	    });

    	return inputPanel;
  }
	public DefaultMutableTreeSub() {
		super();
	}

}
thanks
sunny
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on May 22 2007
Added on Apr 7 2007
5 comments
770 views