JTree - Blatt als Knoten darstellen

Haruka

Mitglied
Morgen ihr,

ich hab eine kleine Frage zum JTree:
Punkte im Baum, die keine Children haben, werden als Blatt dargestellt, Punkte mit Children als Ordner. Soweit alles klar.
Nun möchte ich aber, dass gewisse Punkte - auch ohne Children - als Ordner dargestellt werden. Ich hab probiert mir nen eigenes TreeModel zu basteln mit der Hoffnung, dass er wenn isLeaf() false ist ein Ordner macht... naja, funktioniert auch... nur dann kann ich den Baum nicht mehr aufklappen ^^;

meine isLeaf():
Code:
public boolean isLeaf(Object node) {
  boolean ret;
  if (node.toString().equalsIgnoreCase(obj.mybl.getCAP_GB())) { ret = false; }
  else if (node.toString().equalsIgnoreCase(obj.mybl.getCAP_ROOT())) {ret = false; }
  else { ret = true; }
  return ret;
}

Sobald ich das rauskommentier, geht das Aufklappen wieder... nur wenn ers doch als Knoten akzeptiert (sonst hätte ich auch kein Ordner-Symbol, oder?), wieso kann ich dann nicht im Baum navigieren? *grummel*
 
Nimm einfach mal das als TreeRenderer (sollte eigentlich gehen.. habs nicht mehr getestet)

Code:
import javax.swing.*;
import javax.swing.tree.*;
/**
 * <p>Überschrift: MyTreeRenderer</p>
 *
 * <p>Beschreibung: Ein Renderer, f&uuml;r die korrekte Verarbeitung der Icons etc. </p>
 *
 * <p>Copyright: Copyright (c) 2005</p>
 *
 * <p>Organisation: None</p>
 *
 * @author Tobias Viehweger
 * @version 1.0
 */
public class MyTreeRenderer
	extends DefaultTreeCellRenderer {
  public Component getTreeCellRendererComponent ( JTree tree, Object value,
												  boolean selected,
												  boolean expanded,
												  boolean leaf, int row,
												  boolean hasFocus ) {
	String strVal = value.toString();
	
	if (strVal.equalsIgnoreCase(obj.mybl.getCAP_GB()) ||
		strVal.equalsIgnoreCase(obj.mybl.getCAP_ROOT())) 
	{ 
	  return super.getTreeCellRendererComponent( tree, value, selected, expanded, false,
										  row, hasFocus );
	}
	else
	  return super.getTreeCellRendererComponent( tree, value, selected, expanded, leaf,
										  row, hasFocus );
  }
}
 
Zurück