TableCellRenderer (Java API): Unterschied zwischen den Versionen
K |
K |
||
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
'''{{JAPI|TableCellRenderer}}''' ist ein [[Interface_(Java)|Interface]] der [[Java]] [[API]]. ''TableCellRenderer'' werden von der [[JTable_(Java_API)|JTable]] benutzt, um einzelne Zellen zu zeichnen. | '''{{JAPI|TableCellRenderer}}''' ist ein [[Interface_(Java)|Interface]] der [[Java]] [[API]]. ''TableCellRenderer'' werden von der [[JTable_(Java_API)|JTable]] benutzt, um einzelne Zellen zu zeichnen. | ||
− | Die JTable besitzt bereits einen [[DefaultTableCellRenderer_(Java_API)]][https://docs.oracle.com/javase/8/docs/api/javax/swing/table/DefaultTableCellRenderer.html], der seinerseits von [[JLabel]] erbt und damit viele Standardoptionen wie das Ändern der Hintergrundfarbe einer Zelle oder das Darstellen von Text in fetter Schrift mitbringt. Auch erkennt dieser Renderer, wenn im [[TableModel_(Java_API)|TableModel]] Werte vom Typ [[Boolean]] enthalten sind und zeichnet dann statt Text eine [[JCheckBox]] in die Zelle. Mehr dazu im [[JTable (Tutorial)©]]. | + | Die JTable besitzt bereits einen [[DefaultTableCellRenderer_(Java_API)|DefaultTableCellRenderer]] ([https://docs.oracle.com/javase/8/docs/api/javax/swing/table/DefaultTableCellRenderer.html]), der seinerseits von [[JLabel]] erbt und damit viele Standardoptionen, wie das Ändern der Hintergrundfarbe einer Zelle oder das Darstellen von Text in fetter Schrift, mitbringt. Auch erkennt dieser Renderer, wenn im [[TableModel_(Java_API)|TableModel]] Werte vom Typ [[Boolean]] enthalten sind und zeichnet dann statt Text eine [[JCheckBox]] in die Zelle. Mehr dazu im [[JTable (Tutorial)©]]. |
Die ''JTable'' fordert den ''TableCellRenderer'' über die Methode ''getTableCellRendererComponent'' auf, eine graphische Darstellung, in Form einer [[Component_(Java_API)|Component]], zu generieren. Diese ''Component'' wird anschließend in eine Zelle eingepasst, und gezeichnet. Nach dem Zeichenvorgang, wird die ''Component'' von der ''JTable'' nicht mehr benötigt, und kann vom ''TableCellRenderer'' wiederverwertet werden. | Die ''JTable'' fordert den ''TableCellRenderer'' über die Methode ''getTableCellRendererComponent'' auf, eine graphische Darstellung, in Form einer [[Component_(Java_API)|Component]], zu generieren. Diese ''Component'' wird anschließend in eine Zelle eingepasst, und gezeichnet. Nach dem Zeichenvorgang, wird die ''Component'' von der ''JTable'' nicht mehr benötigt, und kann vom ''TableCellRenderer'' wiederverwertet werden. | ||
Zeile 34: | Zeile 34: | ||
}</syntaxhighlight> | }</syntaxhighlight> | ||
+ | {{Fragen stellen}} | ||
+ | |||
+ | =Weiterführende Artikel= | ||
+ | *[[JTable (Java API) | JTable]] | ||
+ | *[[TableModel (Java API) | TableModel]] | ||
+ | *[[JTableHeader_(Java_API) | JTableHeader]] | ||
+ | *[[TableColumnModel_(Java_API) | TableColumnModel]] | ||
+ | *[[TableCellEditor_(Java_API)| TableCellEditor]] | ||
+ | *[[TableColumn_(Java_API)|TableColumn]] | ||
+ | *[[RowSorter_(Java_API)|RowSorter]] | ||
+ | |||
+ | *[[JTable (Tutorial) | JTable-Tutorial©]] | ||
+ | |||
+ | =Links= | ||
+ | *[http://docs.oracle.com/javase/tutorial/uiswing/components/table.html Oracle Tutorial - How to Use Tables] | ||
[[Kategorie:Java_API]] | [[Kategorie:Java_API]] | ||
[[Kategorie:Swing]] | [[Kategorie:Swing]] | ||
[[Kategorie:JTable]] | [[Kategorie:JTable]] |
Aktuelle Version vom 28. Mai 2019, 13:29 Uhr
TableCellRenderer
ist ein Interface der Java API. TableCellRenderer werden von der JTable benutzt, um einzelne Zellen zu zeichnen.
Die JTable besitzt bereits einen DefaultTableCellRenderer ([1]), der seinerseits von JLabel erbt und damit viele Standardoptionen, wie das Ändern der Hintergrundfarbe einer Zelle oder das Darstellen von Text in fetter Schrift, mitbringt. Auch erkennt dieser Renderer, wenn im TableModel Werte vom Typ Boolean enthalten sind und zeichnet dann statt Text eine JCheckBox in die Zelle. Mehr dazu im JTable (Tutorial)©.
Die JTable fordert den TableCellRenderer über die Methode getTableCellRendererComponent auf, eine graphische Darstellung, in Form einer Component, zu generieren. Diese Component wird anschließend in eine Zelle eingepasst, und gezeichnet. Nach dem Zeichenvorgang, wird die Component von der JTable nicht mehr benötigt, und kann vom TableCellRenderer wiederverwertet werden.
Zu beachten ist, dass der Benutzer nur ein Bild des TableCellEditors sieht, aber nichts anklicken kann. Wenn eine Zelle editiert werden soll, wird ein TableCellEditor benötigt.
Das folgende Beispiel zeigt einen sehr kleinen Renderer, der für boolsche Werte eine JCheckBox zeichnet, für andere Werte nur ein leeres Feld.
public class BooleanRenderer implements TableCellRenderer{
// Die zwei graphischen Repräsentationen dieses Renderers
private JCheckBox box = new JCheckBox();
private JLabel empty = new JLabel();
public Component getTableCellRendererComponent(
JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column){
if( value instanceof Boolean ){
// Die Box selektieren
box.setSelected( Boolean.TRUE.equals( value ));
// Die Box wird nun gezeichnet
return box;
}
else{
// Das leere Feld wird nun gezeichnet
return empty;
}
}
}
Fragen
Das Thema wurde nicht ausreichend behandelt? Du hast Fragen dazu und brauchst weitere Informationen? Lass Dir von uns helfen!
- Besuche uns im Byte-Welt-Forum
- Besuche unseren Chat
Wir helfen dir gerne!
Dir hat dieser Artikel gefallen? Oder Du hast Fehler entdeckt und möchtest zur Berichtigung beitragen? Prima! Schreibe einen Kommentar!
Du musst angemeldet sein, um einen Kommentar abzugeben.