super-Konstruktor ist nicht super ;)

Status
Nicht offen für weitere Antworten.
D

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

Wildcard

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

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)); 	        
    }
 
H

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.
 
D

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
 
H

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.
 
D

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
jmar83 NullPointerException auf member, die per konstruktor gesetzt wird (multithread-kontext) Allgemeine Java-Themen 2
jmar83 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
T Fremde Typen mockt man nicht? Allgemeine Java-Themen 3
Killunox MaxHeap Zuweisung unter Linux funktioniert nicht Allgemeine Java-Themen 1
L Direktes return eines Array geht nicht Allgemeine Java-Themen 20
BestGoalkeeper neuroph hält beim XOR lernen nicht an Allgemeine Java-Themen 13
kodela JDialog zeigt Text nicht an Allgemeine Java-Themen 5
Dann07 Java-Programm findet DLLs nicht! Allgemeine Java-Themen 20
D Twitch API mit HttpURLConnection läuft nicht? Allgemeine Java-Themen 0
M Test geht auf Travis und mit Github Action schief aber nicht lokal Allgemeine Java-Themen 3
R Threads Clip loop loopt nicht Allgemeine Java-Themen 2
Dann07 MP3 Datei abspielen funktioniert nicht Allgemeine Java-Themen 6
W Server-Thread schreibt nicht alle Dateien Allgemeine Java-Themen 6
NicoDeluxe JMS Messages nicht abgeholt Allgemeine Java-Themen 0
O Aus JAR-Datei erstellte EXE-Datei funktioniert nicht Allgemeine Java-Themen 10
A Mp3 Player funktioniert nicht Allgemeine Java-Themen 0
W String -> byte[] -> String - Sieht jemand was ich nicht sehe? Allgemeine Java-Themen 10
M Console geht nicht auf (Windows 10) Allgemeine Java-Themen 3
J Hilfe, Jar Datei kann nicht ausgeführt werden Allgemeine Java-Themen 2
W Enumeration ein Array/List als Eigenschaft mitgeben - warum geht das nicht? Allgemeine Java-Themen 0
W Javac nicht bei Installation installiert Allgemeine Java-Themen 9
S HTML den ich von einer URL hole nicht identisch mit dem HTML im Browser Allgemeine Java-Themen 1
S Java.exe exestiert, aber irgendwie auch nicht Allgemeine Java-Themen 11
D ArrayListe delete Methode klappt nicht Allgemeine Java-Themen 12

Ähnliche Java Themen

Anzeige

Neue Themen


Oben