Checkbox in einer JTable

zeto

Grünschnabel
Zuerst mal ein dickes Lob an dieses Forum. Die Beiträge hier haben mir schon das ein oder andere mal geholfen.

Mein Problem ist folgendes:

Ich habe eine JTable, die über ein TableModel mit Daten befüllt wird. Das TableModel hab ich vom DefaultTableModel implementiert. Mein TableModel enthält neben Spalten vom Typ String auch eine Spalte vom Typ Boolean.
Über die Methode
Code:
public Class<?> getColumnClass(int col) {
    return columnType[col]; 
}
rendert mir die Virtuelle Maschine beim Ausführen eine Checkbox in die Spalte mit dem Typ Boolean.

So und jetzt komm ich mal zu meinem eigentlichen Problem.
Wenn ich diese Checkbox mit der Maus anklicke und den linken Mausknopf wieder loslasse erscheint ein Häkchen.
Also eigentlich so wie es sein soll.
Das Hackchen verschwindet auch wieder, wenn ich die Checkbox nochmal anklicke und ebenfalls den linken Mausknopf wieder loslasse.
Klicke ich aber in eine Checkbox, halte die Maustaste gedrückt, ziehe den Mauszeiger von der Checkbox weg und lasse dann den Mausknopf los, so wird das Häckchen nicht angezeigt aber der Boolean-Wert dieser Box ist gesetzt.
Wie kann ich es erreichen, dass z.B. das Häckchen schon beim Drücken der Maustaste gesetzt wird und nicht erst beim loslassen.
 
Zuletzt bearbeitet:
Du könntest die CheckBox mit dem TableCellRenderer selber Rendern, dann hast du volle Kontrolle über sie.
 
Hab ich mittlerweihle schon gemacht. Mit einem TableCellRenderer war es mir möglich den Zellen Background und Foreground anzupassen.

Nur mein eigentliches Problem hab ich immer noch.

Ich habe eine Vermutung, woran es liegen könnte. Mit jedem Mouse-Klick auf eine Checkbox in meiner JTable wird die Methode getTableCellRendererComponent() aus meinem TableCellRenderer aufgerufen. D.h. mit jedem Mouse-Klick, besser gesagt mit jedem MouseRelease, wird die Zelle neu gezeichnet.

Wie komm ich jetzt nur an die Implementierung der MouseEvents ran?
 
Zuletzt bearbeitet:
Zurück