DefaultTreeCellRenderer auf Änderung reagieren

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo zusammen,

ich habe einen DefaultTreeCellRenderer. Der zeigt mir meine Texte im Tree in unterschiedlichen Farben an(jenachdem welcher status der text hat,das spielt aber keine Roll).
Wenn ich einen Text bzw den Knoten bearbeite, dann müsste der Knoten ne andere Farbe anzeigen(je nach Status eben),
jedoch reagiert der renderer aber nicht auf die änderung des knotens.

weiß jemand was ich da machen könnte?

vielen dank!
 

kleiner_held

Top Contributor
Dann musst du nicht am Renderer ansetzen, sondern am JTree. Genauer gesagt muss dein TreeModel einen Event fuer treeNodesChanged() ausloesen.
 
G

Guest

Gast
danke. ich hab mir schon sowas gedacht.

aber irgendwie weiß ich nicht genau wie das mache...
 
G

Guest

Gast
eine treeModel habe ich.

und ich habs auch schon mit

Code:
treeModel.nodeChanged(node)

versucht

nur ich muss ja irgendwie die farbe für den node setzen können.
 

kleiner_held

Top Contributor
Code:
treeModel.nodeChanged(node);
loest das Neuzeichnen im JTree aus. Der JTree nimmt dann den TreeCellRenderer dafuer. Dieser muss also in der Methode
Code:
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus)
anhand des Object value erkennen, welche Farbe oder aehnliches er verwenden muss.
 
G

Guest

Gast
Die Farbe wird auch erkannt, jenachdem wie das Attribut gesetzt ist.

Jedoch wenn das Attribut geändert hat, bekommt der Renderer nichts von der Änderung mit.
 

kleiner_held

Top Contributor
Nachdem Du das Attribut geändert hast, musst Du treeModel.nodeChanged(node); aufrufen - wenn das nicht funktioniert bräuchte ich schon ein paar mehr Details.
 
G

Guest

Gast
das habe ich schon versucht....aber leider tut sich nichts

hier mein renderer

Code:
package gui;

import control.*;
import javax.swing.tree.*;
import javax.swing.*;
import java.awt.*;

/**
 * This renderer notifies the enabled state of the tree to IconNode, and renders
 * the retrieved icons from IconNode.
 * This implementation operates only in conjunction with IconNode.
 * @author Thomas Tasior Mar 2, 2003, 3:55:52 PM
 */
public class IconNodeRenderer extends DefaultTreeCellRenderer
{
    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/**
     * Casts the value to IconNode, messages the enabled state to herself
     * and the node and pick up the suitable icon for the current
     * state( leaf, expanded or collapsed). If the desired icon is not available,
     * no exception ist thrown and no icon is rendered.
     */
    public Component getTreeCellRendererComponent(JTree tree, Object value,
                                                                                                boolean sel,
                                                                                                boolean expanded,
                                                                                                boolean leaf, int row,
                                                                                                boolean hasFocus)
    {
        String stringValue = tree.convertValueToText(value, sel,
                                                   expanded, leaf, row, hasFocus);
        
        setText(stringValue);
        

        //Attention: must be a IconNode
        MyTreeNode node = (MyTreeNode)value;
        boolean enabled = tree.isEnabled();
        setEnabled(enabled);
        node.setEnabled(enabled);

        if (sel)
        {
        	setForeground(Color.BLUE);
        }
        else
        {
            setForeground(node.getColor()); 
        }
        if (leaf)
        {
            setIcon(node.getLeafIcon());
        }
        else if (expanded)
        {
            setIcon(node.getOpenIcon());
        }
        else
        {
            setIcon(node.getClosedIcon());
        }
        
        setComponentOrientation(tree.getComponentOrientation());
        return this;
    }
}
 
G

Guest

Gast
hoffenlicht erschlägt mich jetzt gleich keiner.... :wink:

ich habe nodeChande(node) nach setVisible(false)aufgerufen....da ging es nicht.

jetzt rufe ich nodeChanged(node) vor setVisible(false) auf, und schon gehts :D

nur warum, kann ich mir nicht genau erklären.. werden nach setVisible(false)alle referenzen sozusagen gelöscht?
 

kleiner_held

Top Contributor
An welchem Objekt und aus welchem Grund rufst Du überhaupt setVisible(false); auf?
Am TreeCellRenderer?
Am JTree?
Beides hat für mich nicht so richtig Sinn.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P DefaultTreeCellRenderer Hintergrundfarbe Java Basics - Anfänger-Themen 3
G DefaultTreeCellRenderer - setFont Java Basics - Anfänger-Themen 4
M Long-Typ in String-Änderung führt zu keinem Ergebnis bei großer Zahl Java Basics - Anfänger-Themen 11
C Farbe in der Auswahlliste (Direkte Reaktion auf Änderung) Java Basics - Anfänger-Themen 3
R Card Layout refresh nach Änderung Java Basics - Anfänger-Themen 1
O Watch Service erkennt Datei Änderung nicht Java Basics - Anfänger-Themen 0
A Methoden Zugriff auf eingelesene Variablen in der main Methode (ohne Änderung der Parameterliste) Java Basics - Anfänger-Themen 4
F Wert auf Änderung überpüfen Java Basics - Anfänger-Themen 7
R AES Key 256 Illegal Key Size auch bei Änderung der Policy Java Basics - Anfänger-Themen 3
Fab1 alte Java Datei wird ausgeführt (trotz Änderung) Java Basics - Anfänger-Themen 4
T Änderung an Script Java Basics - Anfänger-Themen 6
D Variablen Checkbox Änderung in 2. Klasse aktuallisieren Java Basics - Anfänger-Themen 3
J OOP Ungewollte Änderung in einem Objekt Java Basics - Anfänger-Themen 7
c_sidi90 Auf Änderung im Programm reagieren. Java Basics - Anfänger-Themen 6
B Änderung an Text-Datei Java Basics - Anfänger-Themen 5
B Code ausführen bei Änderung von Variablenwert Java Basics - Anfänger-Themen 2
A Scrollbar und Änderung Java Basics - Anfänger-Themen 3
A Änderung im Quellcode > javac > keine Änderung in Kons Java Basics - Anfänger-Themen 6
G JTable Spaltenüberschrift und Änderung Java Basics - Anfänger-Themen 4
G Hinweis bei Änderung des Inhalts in Textfeldern? Java Basics - Anfänger-Themen 4
D JLabel Text-Änderung wird nicht angezeigt Java Basics - Anfänger-Themen 9
G Aktion bei Änderung in JTextArea starten Java Basics - Anfänger-Themen 2
G JDOM: muss XML-Datei nach Änderung abgespeichert werden? Java Basics - Anfänger-Themen 2
G Editierbare JComboBox auf KeyEvents reagieren Java Basics - Anfänger-Themen 29
R App soll selbstständig reagieren, anstatt via Models Java Basics - Anfänger-Themen 0
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
J Auf Pfeiltasten reagieren Java Basics - Anfänger-Themen 3
B Button soll sowohl auf Klicken als auch auf die Enter-Taste reagieren Java Basics - Anfänger-Themen 9
A Nach Druck eines Buttons reagieren andere Button nicht Java Basics - Anfänger-Themen 3
P Auf Button-Klick außerhalb der GUI-Klasse reagieren Java Basics - Anfänger-Themen 10
S Listener reagieren nicht mehr Java Basics - Anfänger-Themen 3
S Je nach erhaltene Daten unterschiedlich reagieren (Design Pattern?) Java Basics - Anfänger-Themen 3
P mousevents bei Maus und touchscreen reagieren unterschiedlich Java Basics - Anfänger-Themen 1
L Auf herunterfahren des PCs reagieren und Datensatz update machen Java Basics - Anfänger-Themen 15
J Fehlermeldung reagieren Java Basics - Anfänger-Themen 10
T Input/Output Direkt auf Eingabe reagieren Java Basics - Anfänger-Themen 8
R Auf auswahl in ner JComboBox reagieren Java Basics - Anfänger-Themen 3
Kukulkan Java-Version (ME, SE) erkennen und darauf reagieren? Java Basics - Anfänger-Themen 35
E auf Tastatur reagieren Java Basics - Anfänger-Themen 8
J Auf ActionEvents in "anderer" Klasse reagieren Java Basics - Anfänger-Themen 2
J Auf Tastendruch reagieren Java Basics - Anfänger-Themen 4
K Auf Eingabe reagieren Java Basics - Anfänger-Themen 6
Z Auf Clipboardänderung reagieren ohne Fokus der Apllikation Java Basics - Anfänger-Themen 2
J auf ausgabe am monitor reagieren Java Basics - Anfänger-Themen 16
F JTabbedPane auf Ereignisse reagieren Java Basics - Anfänger-Themen 6
H KeyListener will nicht reagieren Java Basics - Anfänger-Themen 5
G GUI mit Swing - Zahlen ausgeben und auf Aktion reagieren Java Basics - Anfänger-Themen 2
G jFileChooser auf den Abbrechen-Button reagieren Java Basics - Anfänger-Themen 3
I Auf Abbruch (X) reagieren Java Basics - Anfänger-Themen 9
M JTextField auf RETURN reagieren Java Basics - Anfänger-Themen 2
raptorrs JPanel reagieren nicht auf ActionListener Java Basics - Anfänger-Themen 3
G reagieren wenn Ja gedrückt wird Java Basics - Anfänger-Themen 2
G Auf 2 Tasten reagieren Java Basics - Anfänger-Themen 10
W Innerhalb TableModel auf aktivierte Reihe reagieren Java Basics - Anfänger-Themen 3
B Button - auf Maus reagieren Java Basics - Anfänger-Themen 16
S Auf Ereignisse anderer Klasse reagieren! Java Basics - Anfänger-Themen 2
D JPanel soll auf Veränderungen reagieren! Java Basics - Anfänger-Themen 6
C Klasse muss auf Event in einer anderen Klasse reagieren Java Basics - Anfänger-Themen 7
G Auf Strings verschieden reagieren Java Basics - Anfänger-Themen 3
W Java Spiele reagieren langsamer Java Basics - Anfänger-Themen 3
L Bei Klick auf einen Button reagieren - Wahrer Anfänger! Java Basics - Anfänger-Themen 3
G Methoden in Menüleiste sollen auf Frame reagieren Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben