super-Konstruktor ist nicht super ;)

Status
Nicht offen für weitere Antworten.

DocMcFly

Bekanntes Mitglied
Hallo,

Ich hab die Klasse JTreeTable von Sun heruntergeladen. Jetzt wollte ich eine Hüllenklasse zu dieser Klasse bauen, die es einfach macht, ein paar optische Effekte zu aktivieren. (zB jede zweite Zeile grau im Hintergrund osä.)

Dazu muss ich aber die Methode
Code:
public Component getTableCellRendererComponent(JTable table,
						       Object value,
						       boolean isSelected,
						       boolean hasFocus,
						       int row, int column)
in der Klasse TreeTableCellRenderer manipulieren. Blöderweise liegt diese Klasse aber eingebettet in JTreeTable und wird im Konstruktor sofort gestartet.

Wenn ich in der abgeleiteten Hüllenklasse super(...) aufrufe, wird der falsche TreeTableCellRenderer aufgerufen.

Ich komme an die Instanz von dem TreeTableCellRenderer ran, kann man so was (verrücktes) machen, wie die Methode nach der Instanzierung überschreiben?

Clemens

PS: Ich möchte keinen Code in der Orginal-Sun-JTreeTable-Klasse ändern und am liebsten von dieser ableiten. Da diese Orginal-Klasse, aber hauptsächlich nur aus einem Konstruktor und der eingebetten Klasse besteht, könnte ich, wenn ich den Konstruktor gleich neuschreibe (kopiere), mir die Orgnial-Klasse gleich sparen.
 

Wildcard

Top Contributor
Ich hab die Klasse nie benutzt, aber da wird's doch wohl eine setCellRenderer oder Ähnliches geben...
 

DocMcFly

Bekanntes Mitglied
Also wenn ich den Code richtig deute, passiert ja mehr im Konstruktor als dass nur der Renderer gesetzt wird. Wenn ich jetzt von JTreeTable ableite und den Konstrukter der parent-Klasse werde, wird ja erst ein Model gebaut und der Renderer gesetzt und dann kann ich den wieder überschreiben...
Ist doch nicht so richtig clever? Oder ? Dann doch lieber ganz neuen Konstruktor... vielleicht noch setModel() überladen. Damit das runder wird.

Gruß vom fragenden Clemens


Code:
  public JTreeTable(TreeTableModel treeTableModel) {
    super();

    // Create the tree. It will be used as a renderer and editor. 
    tree = new TreeTableCellRenderer(treeTableModel); 
    
    // Install a tableModel representing the visible rows in the tree. 
    super.setModel(new TreeTableModelAdapter(treeTableModel, tree));
    
    // Force the JTable and JTree to share their row selection models. 
    tree.setSelectionModel(
      new DefaultTreeSelectionModel() { 
        // Extend the implementation of the constructor, as if: 
        /* public this() */ 
        {
          setSelectionModel(listSelectionModel); 
        } 
      }); 
    
    // Make the tree and table row heights the same. 
    tree.setRowHeight(getRowHeight());
    
    // Install the tree editor renderer and editor. 
    setDefaultRenderer(TreeTableModel.class, tree); 
    setDefaultEditor(TreeTableModel.class, new TreeTableCellEditor());  
    
    setShowGrid(false);
    setIntercellSpacing(new Dimension(0, 0)); 	        
    }
 

hupfdule

Top Contributor
Die CellRenderer sind dazu da, damit du nicht die ganze Table ableiten musst. Nimm einer Standard-JTable und setze den CellRenderer neu.
 

DocMcFly

Bekanntes Mitglied
Die CellRenderer sind dazu da, damit du nicht die ganze Table ableiten musst. Nimm einer Standard-JTable
und setze den CellRenderer neu.

:?: Das verstehe ich nicht so ganz.

In der JTreeTable-Klasse von Sun wird ein Model-Adapter verwendet, der an den CellRenderer gekoppelt ist. Das bedeutet... wenn ich jetzt einfach nur den CellRenderer austausche, geht die TreeTable baden, da das Model noch an dem alten CellRenderer hängt.

:idea: Wenn ich das richtig verstehe bleibt mir nichts anderer übrig als die JTreeTable Klasse von Sun komplett zu vergessen. Teile des Sun-JTreeTable-Konstruktors kopieren und eine eigene Ableitung von JTable kreieren.

Seht ihr das auch so?

Gruß Clemens
 

hupfdule

Top Contributor
Oh, da hab ich dich missverstanden. Ich dachte, du benutzt eine normale JTable. JTreeTable kenn ich nicht. Wäre aber ungewöhnlich, wenn diese die Flexibilität mit der Trennung von Renderer und Model aufgibt.
 

DocMcFly

Bekanntes Mitglied
Die Trennung wird deshalb aufgegen, weil Sun den JTree im TableModel dazu verwendet um zusehen wieviele Zeilen angezeigt werden und die Funktionalität des Aufklappen ... halt wie ein Baum ... ;-)

Gruß Clemens
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
conan2 super-super-Konstruktor? Allgemeine Java-Themen 3
H Super-Konstruktor Allgemeine Java-Themen 7
L Super User via Processbuilder (Linux) Allgemeine Java-Themen 3
J Überschriebene Funktion soll nicht die super Funktion aufrufen Allgemeine Java-Themen 4
perlenfischer1984 Mit Lombok Builder Felder in Super Klasse füllen Allgemeine Java-Themen 12
Hacer List<? super E> Allgemeine Java-Themen 10
P Performance: super explizit erwähnen oder weglassen? Allgemeine Java-Themen 5
T Super Klasse Vererbung Problem :/ Allgemeine Java-Themen 10
E Super erzwingen, konzept/pattern gesucht. Allgemeine Java-Themen 8
G super- Methode aufrufen Allgemeine Java-Themen 21
trash super + JTable Allgemeine Java-Themen 7
trash super() mit Variable bestücken Allgemeine Java-Themen 3
G Super- und Subclass Allgemeine Java-Themen 2
S Stellung von super() Allgemeine Java-Themen 4
G super.super Allgemeine Java-Themen 7
P mehrere super klassen Allgemeine Java-Themen 10
thE_29 Foxtrot doch nicht so super. Allgemeine Java-Themen 12
V Vererbungsproblem --> Implicit super constructor Allgemeine Java-Themen 5
thE_29 PrintStream und super.println() Allgemeine Java-Themen 2
B Parameter Konstruktor plus rechnen Allgemeine Java-Themen 6
M Konstruktor einer Methode Allgemeine Java-Themen 35
M Frage zum Konstruktor Allgemeine Java-Themen 2
B Klassen Objekt erzeugen und Konstruktor aufrufen - Welche Lösung ist besser? Allgemeine Java-Themen 2
D Konstruktor - jedes Objekt einzeln erzeugen - alternative? Allgemeine Java-Themen 8
J Konstruktor in JSP beim Kompilieren nicht gefunden Allgemeine Java-Themen 3
J Inner class + Leer-Konstruktor Allgemeine Java-Themen 1
P Threads Objekt im Konstruktor anders wie im Run()-Block Allgemeine Java-Themen 10
H Beim Konstruktor "this" Allgemeine Java-Themen 4
K Variablen Konstruktor, unendlich viele Allgemeine Java-Themen 3
T Konstruktor löst exception aus Allgemeine Java-Themen 7
C Klassen und Konstruktor Allgemeine Java-Themen 2
W Threads NullPointer: Konstruktor "zu langsam"? Allgemeine Java-Themen 3
L Klassen Konstruktor soll Objekt anderer Klasse erzeugen Allgemeine Java-Themen 2
M Klassen Klasse Dynamisch laden und Konstruktor aufrufen Allgemeine Java-Themen 1
DStrohma In abstrakter Klasse Konstruktor von Instanz implementieren Allgemeine Java-Themen 11
C Reflektions, Benutzer soll Konstruktor auswählen und Parameter übergeben können Allgemeine Java-Themen 5
S OOP this-Referenz als Konstruktor-Übergabe Allgemeine Java-Themen 8
ruutaiokwu NullPointerException auf member, die per konstruktor gesetzt wird (multithread-kontext) Allgemeine Java-Themen 2
ruutaiokwu auf priv. konstruktor von "aussen" zugreifen? Allgemeine Java-Themen 4
A Methoden laufen im Konstruktor, außerhalb allerdings nicht Allgemeine Java-Themen 2
E Array im Konstruktor übergeben Allgemeine Java-Themen 3
A Reflection Konstruktor Parameter Supertyp Allgemeine Java-Themen 2
X Dynamisch Konstruktor aufrufen Allgemeine Java-Themen 12
J abstrakte Klassen, Konstanten und Konstruktor Allgemeine Java-Themen 9
E Finale Attribute und Konstruktor Allgemeine Java-Themen 3
S Konstruktor ermitteln Allgemeine Java-Themen 3
B Konstruktor wird nicht aufgerufen Allgemeine Java-Themen 4
T class.newinstance + try/catch-konstruktor Allgemeine Java-Themen 6
S Neue Instanz eines Objekts erzeugen - Konstruktor erhaelt Parameter. Allgemeine Java-Themen 5
B Konstruktor - Vererbungsproblem Allgemeine Java-Themen 2
S konstruktor vererben Allgemeine Java-Themen 5
B Problem mit Methodenaufruf in Konstruktor Allgemeine Java-Themen 6
D [SOLVED] Collection wird nicht richtig per Konstruktor übernommen Allgemeine Java-Themen 8
S Instanz in einer Klasse erstellen, und dem Konstruktor die eigene Klasse mitgeben Allgemeine Java-Themen 4
M Konstruktor / statischer Block Allgemeine Java-Themen 13
Ark Konstruktor per Reflection nicht bekannt Allgemeine Java-Themen 4
J Klasse auf Konstruktor oder Methode testen? Allgemeine Java-Themen 3
Junktyz Konstruktor Allgemeine Java-Themen 9
T Schleife im Konstruktor? Allgemeine Java-Themen 9
P static-Methode aus dem Konstruktor aufrufen Allgemeine Java-Themen 6
F Werte von Member-Variablen erst im Konstruktor setzen? Allgemeine Java-Themen 7
MQue zaehlen im Konstruktor Allgemeine Java-Themen 3
V Initialisierung nur im Konstruktor? Allgemeine Java-Themen 14
J Konstruktor-Aufruf nur aus einem bestimmten Package erlauben Allgemeine Java-Themen 5
T Konstruktor von Hashtable unter Java 5.0! Allgemeine Java-Themen 3
M Feld initialisieren, direkt oder Konstruktor Allgemeine Java-Themen 2
A Objektmethode aus Konstruktor aufrufen? Allgemeine Java-Themen 14
7 Konstruktor Allgemeine Java-Themen 12
M Konstruktor, der Excpetions wirft Allgemeine Java-Themen 2
A Exception in Konstruktor - trotzdem wird Objekt erzeugt! Allgemeine Java-Themen 3
S Konstruktor vererben Allgemeine Java-Themen 9
thE_29 String Konstruktor - Umwandlungsprobleme Allgemeine Java-Themen 5
J Probleme mit dem Konstruktor Allgemeine Java-Themen 8
G Konstruktor-Aufruf nun mit oder ohne Typ? Allgemeine Java-Themen 9
D Kein public Konstruktor Allgemeine Java-Themen 4
K Exception im Konstruktor / Objekt == null Allgemeine Java-Themen 7
S konstruktor nur innerhalb der klasse aufrufbar Allgemeine Java-Themen 5
S konstruktor im interface Allgemeine Java-Themen 5
Zrebna Wieso sollte man Null-Prüfungen nicht mit Optional-Objekten nutzen? Allgemeine Java-Themen 13
kodela Textfeld nicht rechteckig Allgemeine Java-Themen 10
G Doppelklick auf Javaprogramm klapt nicht Allgemeine Java-Themen 1
W Timer terminiert nicht Allgemeine Java-Themen 5
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
W Überflüssige Deklaration vermeiden...war da nicht mal was? Allgemeine Java-Themen 3
N lwjgl kann textureSampler nicht finden Allgemeine Java-Themen 4
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
T .Jar kann man nicht ausführen Allgemeine Java-Themen 18
P JDK nicht installiert in Net Object Fusion Allgemeine Java-Themen 7
D Image bewegt sich nicht nach Klicken auf Button Allgemeine Java-Themen 15
N Regex schlägt nicht an Allgemeine Java-Themen 10
Y Wieso krieg ich die Unit Tests nicht hin Allgemeine Java-Themen 55
D Erste Schritte Mp3 Datei kann nicht von der Festplatte geöffnet werden - mit ChatGPT erstellt Allgemeine Java-Themen 7
G Popup wird nicht sichtbar Allgemeine Java-Themen 9
8u3631984 Funktions Parameter mit Lombok "NonNull" annotieren wird in Jacococ Testcoverage nicht herausgefiltert Allgemeine Java-Themen 3
kodela String kann nicht zu Pfad konvertiert werden Allgemeine Java-Themen 16
M Apache Proxy Weiterleitung auf Tomcat funktioniert nicht wie gewünscht Allgemeine Java-Themen 1
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
OnDemand ApacheCommon FTP Client zuckt nicht Allgemeine Java-Themen 3
T JavaPoet - (noch) nicht existente Typen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben