JTree-Icon setzten (ClassCastException)

tigger7985

Grünschnabel
Hallo,
ich lade meinen JTree mit Daten aus einer Datenabank.
Ich habe eine eigene Klasse aus DefaultMutableTreeNode abgeleitet in der ich noch Infos zu meinen Nodes speichere (zB db-ID und die Farbe des Icons (rot oder grün)).

Jetzt würde ich gern mit dieser Eigenschaft das Icon setzten, schaffe es aber nicht im Renderer das "Object value" in meine Klasse zu casten.

Fehlermeldung:
Code:
java.lang.ClassCastException: java.lang.String cannot be cast to myTreeNode
	at MainFrame$1.getTreeCellRendererComponent(MainFrame.java:64)

Code:
Code:
public Component getTreeCellRendererComponent(JTree tree,
					Object value, boolean sel, boolean expanded, boolean leaf,
					int row, boolean hasFocus) {

				// myTreeNode userObject = (myTreeNode) value; 
				// War mein erster Versuch führte aber zu einem ähnlichen Fehler
				// javax.swing.tree.DefaultMutableTreeNode cannot be cast to myTreeNode

				DefaultMutableTreeNode currentTreeNode = (DefaultMutableTreeNode) value;
				myTreeNode userObject = (myTreeNode) currentTreeNode
						.getUserObject();

				ImageIcon icon = new ImageIcon("src/pics/greenFlag.png");
				icon.setImage(icon.getImage().getScaledInstance(25, 25,
						Image.SCALE_DEFAULT));
				ImageIcon iconRed = new ImageIcon("src/pics/redFlag.png");
				iconRed.setImage(iconRed.getImage().getScaledInstance(25, 25,
						Image.SCALE_DEFAULT));
				setIcon(icon);
				if (userObject.isRed) setIcon(iconRed);
}

Mich verwirrt vor allem warum es nur an der Stelle nicht klappt.
Code:
myTreeNode selectedNode = (myTreeNode) tree.getLastSelectedPathComponent();
funktioniert problemlos.
 

tigger7985

Grünschnabel
Hallo Manuel,

danke für die Antwort.

Nicht wegen dem Link da hatte ich mich schonmal durch gearbeitet...
ABER
als ich grade eine Antwort verfassen wollte ist mir aufgefallen das ich als userObject gar nicht mein Objekt übergeben habe sondern nur die Bezeichnung als String.

Konnte also gar nicht klappen... :rolleyes:

Wundert mich aber immer noch, warum es nicht auch an den zahlreichen anderen Stellen passiert ist...
 

Neue Beiträge