JTree die Selektion speziell Abfragen

Stigma

Gesperrt
Moin

ich habe einen Baum mit Ästen und weiteren Blättern. Ähnlich eines Heap´s.

Nu möchte ich wenn ein Blatt ausgewählt ist in eine innere Klasse springen. Dort frage ich dann alle Möglichkeiten ab und tue was getan werden muss.

Wie verbinde ich meinen Baum mit dieser Klasse. Ich muss nur die Blätter, die allerletzten Elemente damit verknüpfen.

Ich habe :google:, die Forumsuche verwendet (Bin auf drei gute Beispiele getroffen) und habe in der Javainsel und dem Handbuch der JavaProgrammierung nachgeschaut. Wurde aber nicht fündig.
 
Hi

hier ein kleines Beispiel eines Trees mit einem SelectionListener

Code:
import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;



public class JTreeSample extends JPanel{
    

    JTree tree = new JTree();
    
    public JTreeSample(){
        
        this.setLayout(new BorderLayout());
        
        DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
        DefaultMutableTreeNode parent;
        DefaultMutableTreeNode child;
        DefaultMutableTreeNode subchild;
        
        for (int i = 0; i< 50; i++){
            parent = new DefaultMutableTreeNode(i);
            for (int a = 0; a< 50; a++){
                child = new DefaultMutableTreeNode(a);
                for (int c = 0; c< 50; c++){
                    subchild = new DefaultMutableTreeNode(c);
                    child.add(subchild);
                }
                parent.add(child);
            }
            root.add(parent);
        }
        
        DefaultTreeModel dtm = new DefaultTreeModel(root);
        tree.addTreeSelectionListener(new testSelectionListener());
        tree.setModel(dtm);
        
        this.add(tree, BorderLayout.CENTER);
    }

    class testSelectionListener implements TreeSelectionListener{

        @Override
        public void valueChanged(TreeSelectionEvent e) {
            // TODO Auto-generated method stub
            DefaultMutableTreeNode node = (DefaultMutableTreeNode)
            tree.getLastSelectedPathComponent();

            System.out.println(node.getUserObject());
            }
        }

     public static void main(String[] args) {
         
            JFrame fr = new JFrame();
            fr.setLayout(new BorderLayout());
            fr.add(new JTreeSample(), BorderLayout.CENTER);
            fr.setSize(800, 600);
            fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            fr.setVisible(true);
        }
}

Falls du jetzt im Selection Listener noch auf eine andere Klasse zugreifen musst gib diese einfach als Parameter an die Listener Klasse. (Musst natürlich den Code anpassen.)
 
Danke Ryu20 :)

Genau das habe ich gewollt, und nun mit deiner Hilfe erreicht.
So wie ich das nun verstanden habe wird die Klasse testSelectionListener nur dann aufgerufen wenn etwas selektiert worden ist. Das reicht mir aus und werde diese Klasse umfunktionieren.

Weiter so Ryu20 ;-)
 
Zurück