cellrenderer

___ answer7669923 ___

JLabel hat die ganze Feuerkraft, die sie brauchen, und dann einige - es handhabt Texte und Icons, es kann sich zentrieren, es hat standardmäßig einen undurchsichtigen Hintergrund, .... und ich könnte weiter und weiter gehen ...

    
___ answer7672836 ___

Weil jeder - auch das frühe Swing Team - dazu berechtigt ist, gelegentlich Dinger zu machen: -)

Und es ist falsch , eine Komponente zu erweitern, anstatt die Renderer-Schnittstelle zu implementieren und diese Implementierung an eine Komponente delegieren zu lassen (dies könnte eine speziell implementierte JLabel mit allen Pfiffen sein, die sie für notwendig hielten persönlich bin ich nicht überzeugt). Wir alle leiden immer noch unter dieser schlechten Implementierungsentscheidung - der ominöse "Farbspeicher" von DefaultTableCellRenderer ist eine direkte Konsequenz.

Also: Do-not-subclass-someComponent-zu-implementieren-someRenderer. Vor allem nicht für einigeComponent == DefaultTableCellRenderer, es ist kaputt!

BTW, SwingX macht es richtig: -)

    
___ qstntxt ___

Ich habe bemerkt, dass das üblich ist. Zum Beispiel verwenden DefaultListCellRenderer, DefaultTableCellRenderer und DefaultTreeCellRenderer alles. Auch viele der benutzerdefinierten CellRenderer, die ich online sehe, verwenden dies ebenfalls. Ich möchte einen benutzerdefinierten TableCellRenderer in meinem Code verwenden, aber ich bin nicht sicher, ob ich wirklich JLabel ableiten muss. Was ist der Vorteil von JLabel-Unterklassen?

    
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ tag123swing ___ Swing ist das wichtigste Toolkit für Benutzeroberflächen in Java und wird mit dem Standard-Java-SDK ausgeliefert. Es ist im Paket javax.swing enthalten. ___ tag123jlabel ___ Eine Java Swing-Komponente, um eine kurze Textzeichenfolge oder ein Bild oder beides anzuzeigen. ___ answer7670022 ___

Die API für den DefaultTableCellRenderer lautet:

  

Die Tabellenklasse definiert einen einzelnen Zellenrenderer und verwendet ihn als einen Stempel zum Rendern aller Zellen in der Tabelle. es rendert die erste Zelle, ändert den Inhalt des CellRenderers, verschiebt den Ursprung an den neuen Ort, zeichnet ihn neu und so weiter. Die Standardkomponente %code% wurde nicht für die Verwendung auf diese Weise entworfen, und wir möchten vermeiden, dass jedes Mal, wenn die Zelle gezeichnet wird, %code% ausgelöst wird. Dies würde die Leistung stark verringern, da die Nachricht %code% an die Hierarchie des Containers übergeben würde, um festzustellen, ob andere Komponenten betroffen sind. Da der Renderer nur für die Lebensdauer eines Malvorgangs parented ist, möchten wir in ähnlicher Weise den Overhead vermeiden, der mit dem Durchlaufen der Hierarchie für Malvorgänge verbunden ist. Daher überschreibt diese Klasse die Methoden %code% , %code% , %code% , %code% und %code% als No-Ops und überschreibt die Methode %code% ausschließlich, um die Leistung zu verbessern. Wenn Sie einen eigenen Renderer schreiben, beachten Sie bitte diese Leistungsaspekte.

    
___ qstnhdr ___ Warum erweitern Cell-Renderer oft JLabel? ___ tag123subclassing ___ Eine Unterklasse, eine "abgeleitete Klasse", eine Erbenklasse oder eine Kindklasse ist eine modulare abgeleitete Klasse, die eine oder mehrere Sprachobjekte von einer oder mehreren anderen Klassen erbt. ___ tag123cellulender ___ hilf uns dieses Wiki zu bearbeiten ___
3
Antworten

Warum erweitern Cell-Renderer oft JLabel?

Ich habe bemerkt, dass das üblich ist. Zum Beispiel verwenden DefaultListCellRenderer, DefaultTableCellRenderer und DefaultTreeCellRenderer alles. Auch viele der benutzerdefinierten CellRenderer, die ich online sehe, verwenden dies ebenfalls. Ic...
06.10.2011, 02:58