JTree + Frame etc aber wie ?

ene1nz

Mitglied
Schaut euch mal mein Code an,


Code:
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;

public class TreeAnwendung extends JFrame
{
   public TreeAnwendung()
   {
      DefaultMutableTreeNode top =
         new DefaultMutableTreeNode("Azubis");
      
      DefaultMutableTreeNode category1 = null;
      DefaultMutableTreeNode category2 = null;
      DefaultMutableTreeNode category3 = null;
      DefaultMutableTreeNode category4 = null;
      DefaultMutableTreeNode category5 = null;
      
      DefaultMutableTreeNode book = null;
      
      category1 = new DefaultMutableTreeNode( "Andre" );
      top.add( category1 );
      book = new DefaultMutableTreeNode( "Info" );
   
      category1.add(book);
            
      category2 = new DefaultMutableTreeNode( "Norman" );
      top.add( category2 );
      book = new DefaultMutableTreeNode( "Info" );
      
      category2.add(book);
      
      category3 = new DefaultMutableTreeNode( "Dominik" );
      top.add( category3 );
      book = new DefaultMutableTreeNode( "Info" );
      category3.add(book);
      
      category4 = new DefaultMutableTreeNode( "Annika" );
      top.add( category4 );
      book = new DefaultMutableTreeNode( "Info" );
      
      category4.add(book);
      
      category5 = new DefaultMutableTreeNode( "Viktoria" );
      top.add( category5 );
      book = new DefaultMutableTreeNode( "Info" );
      
      category5.add(book);
      
      final JTree tree = new JTree( top );
      JScrollPane treeView = new JScrollPane( tree );
      
      getContentPane().add( treeView );
      
      pack();
      setVisible( true );
      setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
   }
   
   public static void main(String[] args)
   {
      new TreeAnwendung();
   }
}


Ich würde das jetzt gerne so haben dass wenn man auf einen Namen klickt. Erweiter dieser sich ja. Wenn man da jetzt auf Info geht soll ein Word Dokument kommen oder sowas, wo Daten stehen wie Wohnort des Benutzers, Job, Hobbys etc..

Nur habe ich keine Ahnung wie ich es dem Compiler sagen soll, bin noch zu rookie...
Würde mich über eine Hilfe sehr freuen.....
ich komme einfach nicht weiter....:confused:
 
Zuletzt bearbeitet:
Hallo.

Stelle die Daten doch in einem Panel (mit textfeldern) dar, das du immer dann aktualisierst, wenn die entsprechende treenode(info) angewählt wurde.
Wo bekommst du denn deine Daten (die du darstellen möchtest dar), wenn man fragen darf?
 
Um zu wissen wann eine treenode ausgewählt wurde such mal nach dem treeselectionlistener den du dem jtree zuweist.
Und wenn es zum event kommt, fragst du den tree einfach nach tree.getlastselected...
Ja und das mit dem panel ist ja nur gui. Das kannst du ja. ;-)
 
Nur ich habe noch eine kleine Frage

Wenn ich darf, und zwar ich habe das jetzt so gemacht das ich für die benutzer einen einzelne klasse gemacht habe.
Nur habe ich ja jetzt das Main Programm wessen Code hier steht wie kann ich dem jetzt sagen das er aus dem hauptprogramm bei "Andre - Info" jetzt die Klasse InfoAndre aufmacht ?
irgendwas mit get source ?
 
Zuletzt bearbeitet:
Ich habe das Haupt Progroamm wie hier ausgeführt so Gelassen.
Wenn man es es öffnet kommen da die verschiedenen Knoten mit den "Namen" wenn man dann Doppelklick auf den Namen macht kommt ein Neuer Knoten wo "Info" steht. Bis hier hin verstanden ?

Dann habe ich für alle Namen eine neue Klasse gemacht.
Und für jeden Namen ein Frame mit der Info der jeweiligen Person.
Mein Wunsch wäre es wenn ich dem Hauptprogramm mit dem Tree sagen kann das wenn man auf die INFO Doppelklickt er die jeweilige Klasse des Namens öffnet.

Verstanden ?
( P.S : Ich kann nicht gut erklären ich weiß :-) )
 
Aso.
Lege einen MouseListener auf den Tree, frage dann das mouseEvent nach clickcout==2, und wenn ja, dann frage den Tree nach (DefaultMutableTreeNode) Tree.getLastSelectedPathComponent(). Und die Fragst du nach dem Userobject (Das ist was die node im tree anzeigt).
 
Code:
import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextField;
import javax.swing.JTree;
import javax.swing.UIManager;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;

import com.sun.org.apache.bcel.internal.generic.IFNONNULL;

public class JTreeTest1 {

	private JFrame frame;
	private JSplitPane splitPane;
	private JPanel contentPanel, rightPanel;
	private JTree tree;
	private JScrollPane scrollPane;
	private InfoNode1 rootNode, stefanNode, dominikNode, normanNode, martinNode, andréNode, annikaNode, viktoriaNode, infoNodeStefan, infoNodeDominik, infoNodeNorman, InfoNodeMartin, InfoNodeAndré, InfoNodeAnnika, InfoNodeViktoria;
	private JLabel lAlter, lBeruf, lBuero, lName, lVorname, lEmail, lTele, lSchule;
	private JTextField tfAlter, tfBeruf, tfBuero, tfName, tfVorname, tfEmail, tfTele, tfSchule;
	
	public JTreeTest1() {
		init();
	}
	
	public void init() {
		try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch (Exception e) {
		}
		createFrame();
		createSplitPane();
		createPanel();
		createTree();
		createLabel();
		createTextField();
		addTreeListener();
		createScollPane();
		createLayout();
		addLayout();
		showFrame();
	}

	private void createFrame() {
		frame = new JFrame("Auszubildene");
		
	}

	private void createSplitPane() {
		splitPane = new JSplitPane();
		
	}

	private void createPanel() {
		contentPanel = new JPanel();
		rightPanel = new JPanel();
		
	}

	private void createTree() {
		rootNode = new InfoNode1("Azubis");
		
		InfoNodeViktoria = new InfoNode1("Info");
		InfoNodeViktoria.setType(InfoNode1.WITH_INFO);
		InfoNodeViktoria.setAlter("20");
		InfoNodeViktoria.setBeruf("Bürokauffrau");
		InfoNodeViktoria.setBuero("1");
		InfoNodeViktoria.setEmail("fdf@we.de");
		InfoNodeViktoria.setName("Nachname");
		InfoNodeViktoria.setTele("(023");
		InfoNodeViktoria.setVorname("Viktoria");
		InfoNodeViktoria.setSchule("Schule");
		
		viktoriaNode = new InfoNode1("Viktoria");
		
		
		stefanNode.add(infoNodeStefan);
		rootNode.add(stefanNode);
		dominikNode.add(infoNodeDominik);
		rootNode.add(dominikNode);
		normanNode.add(infoNodeNorman);
		rootNode.add(normanNode);
		martinNode.add(InfoNodeMartin);
		rootNode.add(martinNode);
		andréNode.add(InfoNodeAndré);
		rootNode.add(andréNode);
		annikaNode.add(InfoNodeAnnika);
		rootNode.add(annikaNode);
		viktoriaNode.add(InfoNodeViktoria);
		rootNode.add(viktoriaNode);
		
		
		tree = new JTree(rootNode);		
	}
	
	private void createLabel() {
		lAlter = new JLabel("Alter:");
		lBeruf = new JLabel("Beruf:");
		lBuero = new JLabel("Büro:");
		lName = new JLabel("Name:");
		lVorname = new JLabel("Vorname:");
		lEmail = new JLabel("Email:");
		lTele = new JLabel("TelefonNr:");
		lSchule = new JLabel("Schule:");
	}
	
	private void createTextField() {
		tfAlter = new JTextField();
		tfAlter.setEditable(false);
		tfBeruf = new JTextField();
		tfBeruf.setEditable(false);
		tfBuero = new JTextField();
		tfBuero.setEditable(false);
		tfName = new JTextField();
		tfName.setEditable(false);
		tfVorname = new JTextField();
		tfVorname.setEditable(false);
		tfEmail = new JTextField();
		tfEmail.setEditable(false);
		tfTele = new JTextField();
		tfTele.setEditable(false);
		tfSchule = new JTextField();
		tfSchule.setEditable(false);
	}
	
	private void addTreeListener() {
		tree.addTreeSelectionListener(new TreeSelectionListener() {

			public void valueChanged(TreeSelectionEvent arg0) {
							
				InfoNode1 node = (InfoNode1)tree.getLastSelectedPathComponent();
				
				if(node.getType() == InfoNode1.WITH_INFO) {
					tfName.setText(node.getName());
					tfVorname.setText(node.getVorname());
					tfAlter.setText(node.getAlter());
					tfBeruf.setText(node.getBeruf());
					tfEmail.setText(node.getEmail());
					tfTele.setText(node.getTele());
					tfBuero.setText(node.getBuero());
					tfSchule.setText(node.getSchule());
				} else {
					tfName.setText("");
					tfVorname.setText("");
					tfAlter.setText("");
					tfBeruf.setText("");
					tfEmail.setText("");
					tfTele.setText("");
					tfBuero.setText("");
					tfSchule.setText("");
				}
				
				System.out.println("Hatta geklickt in = " + node);
				
				
				
			}
			
		});
	}
	
	private void createScollPane() {
		scrollPane = new JScrollPane(tree);
	}

	private void createLayout() {
		frame.setLayout(new BorderLayout());
		contentPanel.setLayout(new BorderLayout());
		rightPanel.setLayout(null);
		
		lName.setBounds(5,5,80,20);
		tfName.setBounds(85,5,150,20);
		lVorname.setBounds(5,30,80,20);
		tfVorname.setBounds(85,30,150,20);
		lAlter.setBounds(5,55,80,20);
		tfAlter.setBounds(85,55,150,20);
		lBeruf.setBounds(5,80,80,20);
		tfBeruf.setBounds(85,80,150,20);
		lEmail.setBounds(5,105,80,20);
		tfEmail.setBounds(85,105,150,20);
		lTele.setBounds(5,130,80,20);
		tfTele.setBounds(85,130,150,20);
		lBuero.setBounds(5,155,80,20);
		tfBuero.setBounds(85,155,150,20);
		lSchule.setBounds(5,180,80,20);
		tfSchule.setBounds(85,180,150,20);
		
	}

	private void addLayout() {		
		rightPanel.add(lName);
		rightPanel.add(tfName);
		rightPanel.add(lVorname);
		rightPanel.add(tfVorname);
		rightPanel.add(lAlter);
		rightPanel.add(tfAlter);
		rightPanel.add(lBeruf);
		rightPanel.add(tfBeruf);
		rightPanel.add(lEmail);
		rightPanel.add(tfEmail);
		rightPanel.add(lTele);
		rightPanel.add(tfTele);
		rightPanel.add(lBuero);
		rightPanel.add(tfBuero);
		rightPanel.add(lSchule);
		rightPanel.add(tfSchule);
		
		
		splitPane.setLeftComponent(scrollPane);
		splitPane.setRightComponent(rightPanel);
		splitPane.setDividerLocation(200);
		
		contentPanel.add(splitPane);
		
		frame.setContentPane(contentPanel);
		
	}
	
	private void showFrame() {	
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(new Dimension(600,400));
		frame.setVisible(true);
	}
	
}


So schaut mein Code jetzt aus, ich würde gerne im unteren Bereich, also unter den Textfeldern ein Bild der jeweiligen Person.
Könnte mir da jemand weiter helfen.
Den Code habe ich mit meinem Ausbilder gemacht.

Über Hilfe würde ich mich sehr freuen.
 
Zurück