JTree und Anzeige des entsprechenden Panels

  • Themenstarter Themenstarter MakusG
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
M

MakusG

Gast
Hallo,
ich habe ein JTree, dessen Elemente, die direkt nach der Wurzel kommen, insgesamt 3 weitere Nodes haben. Zu jedem Knoten gibt es ein eigenes ContentPanel (also insgesamt 4), die je nach Auswahl des Knotens rechts angezeigt werden müssen.
Weiß jemand wie man das am besten macht?

Danke.Danke.
 
Über einen TreeSelectionListener. Den fügst du dem Tree mittels '#addTreeSelectionListener hinzu, so dass er bei Selektionen aufgerufen wird. Darin führst du dann die gewünschten Änderungen am Panel aus.
 
Danke, soweit hab ich mir das gedacht. Aber ich weiß nicht genau, wie das aussieht, bzw was ich da genau machen muss. Hättest du vielleicht ein allgemeines Beispiel parat. Wäre echt super 😉
 
Code:
tree.getSelectionModel().addTreeSelectionListener(
  new TreeSelectionListener()
  {
    public void valueChanged( TreeSelectionEvent e )
    {
      TreePath path = e.getNewLeadSelectionPath();
      System.out.println( path );
    }
  }
);
 
Gut, aber wie kriege ich nun die 4 Panels zur Anzeige.
Ich habe die Panels als Instanzvariablen.
Werden diese Panels außerhalb der SelectionListener Methode erzeugt?
Macht es Sinn, die Panels in einem JPanel[] zu speichern und dann
in der SelectionListenerMethode sowas aufzurufen:
Code:
  panels[i].setVisible(true);
  contentPane.add(panels[i],BorderLayout.CENTER);
 
Hallo, kann mir denn niemand helfen. Es wäre echt wichtig, da ich hier am verzweifeln bin.

Wie schaffe ich es in der TreeSelectionListener Methode, für jeden selektierten Knoten das entsprechende Panel anzuzeigen ?
Anbei die Methode, die die Struktur des Baumes erzeugt: Jedes dieser Panel bekommt im Konstruktor ein entsprechendes Objekt.

ANodePanel(AModel model);
BNodePanel(BModel model);
CNodePanel(CModel model);
DNodePanel(DModel model);
Code:
		JPanel ANodePanel;
		JPanel bNodePanel;
		JPanel cNodePanel;
		JPanel dNodePanel;
		
		
		int aNodes = getAData().size();
		int bNodes = getBData().size();
		int cNodes = getCData().size();
		int dNodes = getDData().size();
		
		DefaultMutableTreeNode root = new DefaultMutableTreeNode(new String("Root"));		
		
		for(int i = 0;i<aNodes;i++)
		{
			String aValue =  ((AModel)getAData().get(i)).getAValue();
			int bValue = ((AModel)getAData().get(i)).getBValue();
			
			DefaultMutableTreeNode a = new DefaultMutableTreeNode(new AModel(aValue,bValue));			
			root.add(a);
			DefaultMutableTreeNode parent = a;			
			
		    for(int j = 0;j<bNodes;j++)
			{			    	
			   String a = ((BModel)getBData().get(j)).getAValue();
			   int b  = ((BModel)getBData().get(j)).getBValue();
			   int c = ((BModel)getBData().get(j)).getCValue();
			   int d = ((BModel)getBData().get(j)).getDValue();
			   String e = ((BModel)getBData().get(j)).getEValue();			   			   
			   
			   DefaultMutableTreeNode b = new DefaultMutableTreeNode(new BModel(a,b,c,d,e));
			   parent.add(b);
			   DefaultMutableTreeNode p = b;			   
			   
			   for(int k = 0;k<cNodes;k++)
			   {
				   String a = ((cModel)getCData().get(k)).getAValue();
				   DefaultMutableTreeNode c = new DefaultMutableTreeNode(new CModel(a));
				   p.add(c);
				   DefaultMutableTreeNode q = c;				   
				   
				   for(int l = 0;l<dNodes;l++)
				   {
					   String a = ((DModel)getData().get(l)).getAValue();
					   String b = ((DModel)getData().get(l)).getBValue();
					   String c = ((DModel)getData().get(l)).getCValue();
					   DefaultMutableTreeNode d = new DefaultMutableTreeNode(new DModel(a,b,c));
					   q.add(d);						   
				   }				   
			   }  
			}	   
		}
		
		DefaultTreeModel model = new DefaultTreeModel(root);		
		tree = new JTree(model);

Bütte Bütte hilf mir jemand :-/
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben