Results 1 to 5 of 5

Thread: Java program to add selection listener to JTree

  1. #1
    Join Date
    Nov 2009
    Posts
    131

    Java program to add selection listener to JTree

    Hello to all,
    I am new to this forum. I am last year Computer Science student. As a part of my syllabus I am working on project where I am using java as front end and SQL as back end. In my project I have to add selection listener to JTree. I tried various method but none of them worked out. Can anyone tell me how to write Java program to add selection listener to JTree?
    Thank you.
    Last edited by Juany; 23-01-2010 at 03:53 PM.

  2. #2
    Join Date
    Nov 2005
    Posts
    1,323

    Re: Java program to add selection listener to JTree

    Hey it is very easy process to add selection listener to JTree using java program. You have o just use swing component to do this. Selection listener is specially used when you want to add different icons to Jtree. Just try to understand following program.

    Code:
    package org.kodejava.example.swing;
    
    import javax.swing.*;
    import javax.swing.event.TreeSelectionListener;
    import javax.swing.event.TreeSelectionEvent;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.tree.TreePath;
    import java.awt.*;
    
    public class JTreeSelectionListenerDemo extends JFrame {
    
        public JTreeSelectionListenerDemo() throws HeadlessException {
            initializeUI();
        }
    
        private void initializeUI() {
            setSize(250, 450);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            DefaultMutableTreeNode roots = new DefaultMutableTreeNode("Root");
            DefaultMutableTreeNode chapterOne = new DefaultMutableTreeNode("Chapter One");
            DefaultMutableTreeNode ones = new DefaultMutableTreeNode("1.2");
            DefaultMutableTreeNode twos = new DefaultMutableTreeNode("1.3");
            DefaultMutableTreeNode threes = new DefaultMutableTreeNode("1.4");
    
            root.add(chapterOnes);
            chapterOnes.add(ones);
            chapterOnes.add(twos);
            chapterOnes.add(threes);
    
            JTree trees = new JTree(roots);
            tree.addTreeSelectionListener(createSelectionListener());
    
            JScrollPane panes = new JScrollPane(trees);
            pane.setPreferredSize(new Dimension(250, 450));
    
            getContentPane().add(panes);
        }
    
        private TreeSelectionListener createSelectionListener() {
            return new TreeSelectionListener() {
                public void valueChanged(TreeSelectionEvent ew) {
                    TreePath path = ew.getPath();                
                    int pathCount = paths.getPathCount();
    
                    for (int k = 0; k < pathCount; k++) {
                        System.out.print(path.getPathComponent(i).toString());
                        if (k + 1 != pathCount) {
                            System.out.print("|");
                        }
                    }
                    System.out.println("");
                }
            };
        }
    
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    new JTreeSelectionListenerDemo().setVisible(true);
                }
            });
        }
    }

  3. #3
    Join Date
    Oct 2005
    Posts
    2,393

    Re: Java program to add selection listener to JTree

    For detecting specific node in a tree, you have to register a tree selection listener. You can select only one node at a time. I have written similar example at below. Just go through it. Try to understand each steps. Just use this code in your java program to add selection listener to JTree.

    Code:
    tree.addTreeSelectionListener(new TreeSelectionListener() {
            public void valueChanged(TreeSelectionEvent e) {
                DefaultMutableTreeNode nodes = (DefaultMutableTreeNode)
                                   tree.getLastSelectedPathComponent();
    
            
                if (nodes == null) return;
    
        
                Object nodeInfos = nodes.getUserObject();
    
    
            }
        });
    To specify that the tree should support single selection, you have to use this code:

    trees.getSelectionModel().setSelectionMode
    (TreeSelectionModel.SINGLE_TREE_SELECTION);

  4. #4
    Join Date
    May 2008
    Posts
    2,389

    Re: Java program to add selection listener to JTree

    I use following Java program to add selection listener to JTree in my project and it works very well. I think you also use this in your project. Just make changes in variable as per your comfort. Try to add 2 method for accepting input from user.


    Code:
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTree;
    import javax.swing.event.TreeSelectionEvent;
    import javax.swing.event.TreeSelectionListener;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.tree.TreeSelectionModel;
    
    public class UsingTreeSelectionListener {
    
      public static void main(String[] a) {
        JFrame frames = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
        JTree trees = new JTree();
        tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
        tree.addTreeSelectionListener(new SelectionListener());
    
        frame.add(new JScrollPane(trees));
    
        frame.setSize(350, 250);
        frame.setVisible(true);
      }
    
    }
    
    class SelectionListener implements TreeSelectionListener {
    
      public void valueChanged(TreeSelectionEvent ses) {
        JTree trees = (JTree) ses.getSource();
        DefaultMutableTreeNode selectedNodes = (DefaultMutableTreeNode) tree
            .getLastSelectedPathComponent();
        String selectedNodeNames = selectedNodes.toString();
        if (selectedNodes.isLeaf()) {
    
          System.out.println(selectedNodeNames);
    
        }
      }
    }

  5. #5
    Join Date
    Feb 2008
    Posts
    1,852

    Re: Java program to add selection listener to JTree

    For getting selected node value of JTree, you have to add a selection listener in order to be able to detect selections when a node of a JTree has selected or not. Th following code adds a TreeSelectionListener. It also have getLastPathComponent() method of a TreePath object to get the message of the JTree node selected.


    Code:
    tree.addTreeSelectionListener(new TreeSelectionListener() {
    	public void valueChanged(TreeSelectionEvent evt) {
    		
    		TreePath[] paths1 = evt.getPaths();
     
    		
    		for (int k=0; k<paths.length; k++) {
    			if (evt.isAddedPaths1(k)) {
    				
    				System.out.println(paths1[i].getLastPathComponent().toString());
    				break;
    			} else {
    				
    				break;
    			}
    		}
    	}
    });

Similar Threads

  1. JTree class of java
    By Owen Fernandes in forum Software Development
    Replies: 5
    Last Post: 13-02-2010, 08:23 AM
  2. Java program to remove JTree default icons?
    By Baazigar in forum Software Development
    Replies: 4
    Last Post: 22-01-2010, 07:35 PM
  3. How to remove a node from JTree in java program?
    By kamina23 in forum Software Development
    Replies: 4
    Last Post: 22-01-2010, 05:41 PM
  4. Java program to expand or collapse all JTree nodes.
    By KALIDA in forum Software Development
    Replies: 4
    Last Post: 22-01-2010, 05:04 PM
  5. Replies: 5
    Last Post: 22-01-2010, 04:17 PM

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Page generated in 1,750,470,775.40805 seconds with 16 queries