Sehr geehrte Damen und Herren!
Ich habe einen JTree erstellt und dazu einen eigenen Knotentyp (abgeleitet von DefaultMutableTreeNode) erstellt, der als zusaetzlichen Member eine Farbe vom Typ Color enthaelt.
Im eigenen Renderer (abgeleitet von DefaultTreeCellRenderer) moechte ich nun auf diesen Farbwert zugreifen, jedoch laesst sich der Knoten nicht auf meinen eigenen Casten - warum?
Mit freudnlichen Gruessen und Danke fuer Ihre Hilfe - Max Meisner
(anbei ein Quellcode in vereinfachter Darstellung des Problemes)
Ich habe einen JTree erstellt und dazu einen eigenen Knotentyp (abgeleitet von DefaultMutableTreeNode) erstellt, der als zusaetzlichen Member eine Farbe vom Typ Color enthaelt.
Im eigenen Renderer (abgeleitet von DefaultTreeCellRenderer) moechte ich nun auf diesen Farbwert zugreifen, jedoch laesst sich der Knoten nicht auf meinen eigenen Casten - warum?
Mit freudnlichen Gruessen und Danke fuer Ihre Hilfe - Max Meisner
(anbei ein Quellcode in vereinfachter Darstellung des Problemes)
Java:
package muster;
import java.awt.Color;
import java.awt.Component;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
public class InternetFrageMain extends JFrame {
private JScrollPane scrollPane = new JScrollPane();
private JTree tree = null;
/**
* Konstruktor
*/
public InternetFrageMain() {
DefaultMutableTreeNode wurzel = new DefaultMutableTreeNode("Wurzel");
MyMutableTreeNode eintrag_1 = new MyMutableTreeNode("Eintrag 1",
Color.RED);
MyMutableTreeNode eintrag_2 = new MyMutableTreeNode("Eintrag 1",
Color.BLUE);
wurzel.add(eintrag_1);
wurzel.add(eintrag_2);
tree = new JTree(wurzel);
scrollPane.setViewportView(tree);
this.getContentPane().add(scrollPane);
MyTreeCellRenderer renderer = new MyTreeCellRenderer();
tree.setCellRenderer(renderer);
}
public static void main(String[] args) {
InternetFrageMain frame = new InternetFrageMain();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
private class MyMutableTreeNode extends DefaultMutableTreeNode {
private Color farbe = null;
public MyMutableTreeNode(String nameKnoten, Color farbe) {
super(nameKnoten);
this.farbe = farbe;
}
public Color getFarbe() {
return farbe;
}
}
private class MyTreeCellRenderer extends DefaultTreeCellRenderer {
public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean sel, boolean expanded, boolean leaf, int row,
boolean hasFocus) {
MyMutableTreeNode knoten = (MyMutableTreeNode) value;
Color farbe = knoten.getFarbe();
this.setForeground(farbe);
return super.getTreeCellRendererComponent(tree, value, sel,
expanded, leaf, row, hasFocus);
}
}
}