JTable Spalte mit JCheckbox und JLabel

BladeUser

Grünschnabel
Hallo,

leider hat mir Google damit nicht weiterhelfen können.
Ich benötige in einer JTable innerhalb einer Spalte abwechselnd mal eine JCheckbox und ein JLabel. Das ganze soll dann ca. so aussehen:

Column
1. Row ?
2. Row Label
3. Row ?
4. Row ?
5. Row Label
...
...

Ich setze hierfür einen TableCellRenderer ein, finde jedoch nicht heraus wie ich in der getTableCellRendererComponent eine Checkbox returnen kann?!
Ein einfaches

Code:
JCheckBox checkbox = new JCheckBox();
		JLabel label = new JLabel();
		
		
		if (irgendein Vergleich){
		return label;}
		else{
			return checkbox;
		}

reicht leider nicht aus, weil das ColumnClass der Spalte nur einen Wert aufnehmen kann. D.h. die Label Zellen enthalten dann ebenfalls eine Checkbox.

Bitte um Hilfe, bevor ich weiter an diesem Problem verzweifle.
Grüße, Igor
 

BladeUser

Grünschnabel
die Seite kenne ich schon, leider finde ich da nicht die Lösung zu meinem Problem.
Ich hoffe mein Problem ist nachvollziehbar wie ich es erklärt habe :)
 

takidoso

Erfahrenes Mitglied
hi BladeUser,
folgender Hinweis der Seite könnte den Schlüssel beinhalten:
---------------------------------------------------------------------------------------------
To choose the renderer that displays the cells in a column, a table first determines whether you specified a renderer for that particular column. If you did not, then the table invokes the table model's getColumnClass method, which gets the data type of the column's cells. Next, the table compares the column's data type with a list of data types for which cell renderers are registered. This list is initialized by the table, but you can add to it or change it. Currently, tables put the following types of data in the list:

Boolean — rendered with a check box.
Number — rendered by a right-aligned label.
Double, Float — same as Number, but the object-to-text translation is performed by a NumberFormat instance (using the default number format for the current locale).
Date — rendered by a label, with the object-to-text translation performed by a DateFormat instance (using a short style for the date and time).
ImageIcon, Icon — rendered by a centered label.
Object — rendered by a label that displays the object's string value.
---------------------------------------------------------------------------------------------

Aus dieser Information schließe ich, dass der normale JTable das so erst mal nicht zulässt. Er möchte offenbar nur Renderer pro Spalte kennen. Daraus kann man folgern, dass man offenbar etwas in Jtable anpassen müsste, damit es gehen kann.
Ein anderer Ansatz kann auch sein einen Renderer oder Editor zu schaffen, der mehrere Renderer beherbergt und anhand einer weiteren Dateninformation (z.b. Liste mit gewünschten Renderer pro Zeile in einer Reihe). Den letzten Ansatz noch besser ausgedrückt, eie Wrapperklasse, die mitels Liste den richtigen eigentlicen renderer ausgibt.

Ich habe dazu Dir ein paar Hinweise ergoogelt, die Dich vielleicht weiterbringen:
(verwendete Anfrage an google war: swing table different renderers in one column)


in der Hoffnung geholfen zu haben

Takidoso
 

Neue Beiträge