JTree wird nicht mehr gezeichnet

  • Themenstarter Themenstarter Smeagollum
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
S

Smeagollum

Gast
Hi, ich hab ein kleines Problem mit einem JTree... ich möchte gerne, dass wenn ein bestimmtes ereignis eintritt (in meinem Fall das aufrufen eines Threads) mein ganzer JTree einfach neu gezeichnet wird (mach ich der einfachheit wegen, ich weiß dass es auch anders geht aber egal).

Also immer wenn mein Thread z.b. 10000ms erreicht hat, soll im ContentPane dieser Tree komplett neu gezeichnet werden (wird aus dem cP herausgeworfen und einfach neu hinzugefügt...). Achja und es ist nicht direkt der Tree sondern der Tree liegt in einem Panel (mir hat ein Kumpel gesagt das ist besser wegen dem doublebuffered usw., keine ahnung) Das funktioniert aber leider nicht, der Tree ist dann einfach ganz weg, woran könnte das liegen, was mach ich falsch?

Repaint und updateUI funktionieren auch alle nicht...
Dankeschön schonmal für die Antworten!!

Greetz


Code:
public void updateTree() {
		
		cnt_contentPane.remove(pan_tree);
		
		pan_tree = new JPanel();
		pan_tree.setLayout(null);
	    pan_tree.setBounds(5,(int) (jsp_seperator.getLocation().getY()+3),dim_Dimension.width-5,dim_Dimension.height-5);	   
	    
	    pan_tree.add(jtr_tree);
	    pan_tree.setVisible(true);
	    
		jtr_tree.updateUI();
		pan_tree.updateUI();
		
		cnt_contentPane.add(pan_tree);
		cnt_contentPane.repaint();
}

Mit daten füllen, initialisiern usw. erfolgt schon vorher
 
wieso beim neuzeichnen removen und wieder adden, wieso nicht einfach repaint aufrufen?
haste schonmal versucht es mit einem LayoutManager zu lösen? also deinem pan_tree BorderLayout als LayoutManager angeben und dann pan_tree.add(jtr_tree, BorderLayout.CENTER)
 
Wenn sich die Inhalte der Knoten und Blätter verändert, ist die einzig richtige Variante über das TreeModel zu gehen, und die angemeldeten TreeModelListenern mit "treeNodesChanged" von den Veränderungen zu unterrichten. Der JTree wird daraufhin selbstständig aktualisieren, was aktualisiert werden muss.
 
Also erstmal tausend dank für die Hilfe, jetzt funktionierts =)

Aber noch ein kleines Problem hätte ich und zwar: Ich möchte, dass alle Nodes (die auch unternodes haben, bei allen anderen machts ja keinen sinn) expanded werden.

Gibts es dazu irgend eine Möglichkeit, dass automatisch alle nodes expended werden?
Dachte da an sowas wie setExpandedState aber das gibts leider nicht und in der Dokumentation/in Foren hab ich auch nix gefunden...

Ansonsten versuch ichs auch mit der expandNode() Methode. Der müsste ich den TreePath übergeben, gibt es ne möglichkeit den Path einer node zu bekommen, die ich mit ihrem Namen identifiziere?

Dankeschön schonmal für die Hilfe!!

Grüße Smeagollum
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben