JTree - klick auf Blätter neues Fram öffnen

Polli

Mitglied
Hallo alle zusammen,

ich habe mir mal einen JTree erstellt. Nun möchte ich wenn ich auf ein Blatt klicke, dass sich ein neues Fenster öffnet... Mit einen ActionListener oder nem anderen mir bekannten Listener bekomme ich es leider nicht hin... Kann mir jemand sagen was ich machen kann?

Hier mal kurz der Quellcode:
PHP:
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeNode;


public class Hilfeverzeichnis 
{
	JTree tree 	 = new JTree();
	JFrame frame = new JFrame();
	   

    
	public static TreeNode createTree() 
	{
		DefaultMutableTreeNode root = new DefaultMutableTreeNode("Hilfe");
		
		DefaultMutableTreeNode table  		 = new DefaultMutableTreeNode("Tabelle");
		DefaultMutableTreeNode task   		 = new DefaultMutableTreeNode("Aufgabe");
		DefaultMutableTreeNode export_data 	 = new DefaultMutableTreeNode("Export");
		DefaultMutableTreeNode import_data 	 = new DefaultMutableTreeNode("Import");
		DefaultMutableTreeNode konfiguration = new DefaultMutableTreeNode("Konfiguration");
		
		DefaultMutableTreeNode task1   = new DefaultMutableTreeNode("1");
		DefaultMutableTreeNode task2   = new DefaultMutableTreeNode("2");
		DefaultMutableTreeNode task3   = new DefaultMutableTreeNode("3");
		DefaultMutableTreeNode task4   = new DefaultMutableTreeNode("4");
		DefaultMutableTreeNode task5   = new DefaultMutableTreeNode("5");
		DefaultMutableTreeNode task6   = new DefaultMutableTreeNode("6");
		DefaultMutableTreeNode task7   = new DefaultMutableTreeNode("7");
		DefaultMutableTreeNode task8   = new DefaultMutableTreeNode("8");
		DefaultMutableTreeNode task9   = new DefaultMutableTreeNode("9");
		DefaultMutableTreeNode task10  = new DefaultMutableTreeNode("10");
		DefaultMutableTreeNode task11  = new DefaultMutableTreeNode("11");
		DefaultMutableTreeNode import_data1 = new DefaultMutableTreeNode("Area-Datenbank (WinPE)");
		DefaultMutableTreeNode import_data2 = new DefaultMutableTreeNode("PLZ-Übersicht");
		DefaultMutableTreeNode import_data3 = new DefaultMutableTreeNode("Kreisfreie Städte destatis");
		DefaultMutableTreeNode import_data4 = new DefaultMutableTreeNode("Gemeindeanzahl destatis");
		DefaultMutableTreeNode import_data5 = new DefaultMutableTreeNode("Verkehrszellen Berlin");
		DefaultMutableTreeNode import_data6 = new DefaultMutableTreeNode("Area-Datenbank (ohne Berlin)");
		DefaultMutableTreeNode import_data7 = new DefaultMutableTreeNode("PLZ-Gemeindenr. Verzeichnis");
		DefaultMutableTreeNode import_data8 = new DefaultMutableTreeNode("Area-Datenbank (log-Datei)");
		
		task.add(task1);
		task.add(task2);
		task.add(task3);
		task.add(task4);
		task.add(task5);
		task.add(task6);
		task.add(task7);
		task.add(task8);
		task.add(task9);
		task.add(task10);
		task.add(task11);
		import_data.add(import_data1);
		import_data.add(import_data2);
		import_data.add(import_data3);
		import_data.add(import_data4);
		import_data.add(import_data5);
		import_data.add(import_data6);
		import_data.add(import_data7);
		import_data.add(import_data8);
		

		//Aufgabe
		root.add(task);
		//Export
		root.add(export_data);
		//Import
		root.add(import_data);
		//Konfiguration
		root.add(konfiguration);
		//Tabelle
		root.add(table);
		return root;
	}

	public static void main(String[] args) 
	{
		TreeNode root = createTree();
		JTree tree = new JTree(root);
		tree.setRootVisible(false);
		JPanel panel = new JPanel();
		JFrame frame = new JFrame("JTree - Demo");
		panel.add(new JScrollPane( tree ));
		frame.add(panel);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.pack();
		frame.setSize(500, 550);
		frame.setLocationRelativeTo( null );
		frame.setVisible(true);
	}
}

Wenn ich nun auf zB auf "Aufgabe 1" klicke möchte ich dass sich das Fenster öffnet:

PHP:
import javax.swing.JFrame;
import javax.swing.JLabel;


public class Aufgabe1 
{
	JFrame frame = new JFrame();
	public void aufgabe1() 
	{
		JLabel label = new JLabel
		("Text Aufgabe 1");
		frame.add(label);
		frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		frame.setSize(300, 300);
		frame.setVisible(true);
	}
}

nur leider weiß ich Momentan wirklich nicht mehr weiter....

Freu mich über eure Hilfe...
Danke im Voraus.
MFG Polli
 
Hallo Polli,

das kannst du mit dem MausListener realisieren:
Java:
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;

/**
 * The Class TreeTest.
 */
public class TreeTest extends JFrame {

    /**
     * Create a new instance of <code>TreeTest</code>.
     */
    public TreeTest() {
        super("TreeTest");
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        final JTree tree = new JTree();
        getContentPane().add(new JScrollPane(tree));

        tree.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                final TreePath path = tree.getPathForLocation(e.getX(), e.getY());
                if (path != null) {
                    final TreeNode node = (TreeNode) path.getLastPathComponent();
                    if (node.isLeaf()) {
                        openNewFrame(node);
                    }
                }
            }
        });
    }

    private void openNewFrame(TreeNode node) {
        final JFrame frame = new JFrame();
        frame.setTitle(node.toString());
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.setSize(300, 300);
        frame.setLocationRelativeTo(this);
        frame.setVisible(true);
    }

    /**
     * The main method.
     *
     * @param args the arguments
     */
    public static void main(String[] args) {
        final JFrame frame = new TreeTest();
        final Dimension frameSize = new Dimension(400, 250);
        frame.setSize(frameSize);
        final Dimension screenSize =
            Toolkit.getDefaultToolkit().getScreenSize();
        final int frameX = (screenSize.width - frameSize.width) / 2;
        final int frameY = (screenSize.height - frameSize.height) / 2;
        frame.setLocation(frameX, frameY);
        frame.setVisible(true);
    }
}

Grüße
Vincent
 
Zurück