# JTable: editieren bei Doppelklick deaktivieren, aber...



## ThreadPool (15. Mrz 2010)

Hi,

angenommen es sei ein selbst implementiertes TableModel vorhanden. Dieses Tablemodel implementiert
die Methode isCellEditable() derart das genau eine Spalte editierbar ist. Dieses Model wird einer 
standard JTable übergeben. Nun ist es aber so, dass durch einen Doppelklick auf diese Zelle diese
in ihren "Editiermodus" geht.
Genau das möchte ich verhindern, da die Zellen auf eine andere Art und Weise in den "Editiermodus" gebracht werden sollen. Letzteres funktioniert nicht wenn man in isCellEditiable grundsätzlich false zurückgibt. Meine momentane Lösung sieht so aus, das ich einen CellEditor geschrieben habe der falls ein Mouse-Event einläuft prüft ob die Klickanzahl gleich Integer.MAX ist um zu verhindern das die Zelle in den Editiermodus geschaltet wird.
Meine Frage ist nun, geht das eleganter, habe ich irgendwas übersehen, gibt es andere Wege? Ich 
finde es jetzt nicht besonders berauschend die Logik zum "Akzeptieren" ob eine Zelle editiert werden 
kann auf die JTable und das TableModel aufteilen zu müssen.


----------



## Ebenius (15. Mrz 2010)

Wenn das Model Deiner Tabelle mitteilt, dass eine Zelle editierbar ist, dann wird die Tabelle die Zelle auch editieren wollen. Den CellEditor explizit zu setzen und den Event zu prüfen halte ich für sinnvoll. Warum Du allerdings nicht einfach für jeden MouseEvent [c]false[/c] zurück lieferst, sondern erst auf eine unmögliche Anzahl von ClickCounts prüfst, damit dann [c]false[/c] zurück gegeben wird, ist mir unklar. Beziehungsweise: Wenn Du schon den Weg gehst auf [c]ClickCounts == Integer.MAX_VALUE[/c] zu prüfen, warum implementierst Du den Editor dann selbst und nimmst nicht den DefaultCellEditor und konfigurierst ihn mit [c]setClickCountToStart(Integer.MAX_VALUE)[/c]?

Ich finde es ziemlich logisch, den CellEditor mit dem Wissen darüber auszustatten wie die Inhalte der Tabelle editiert werden sollen.

Ebenius


----------



## ThreadPool (15. Mrz 2010)

Ebenius hat gesagt.:


> Warum Du allerdings nicht einfach für jeden MouseEvent [c]false[/c]
> zurück lieferst, sondern erst auf eine unmögliche Anzahl von ClickCounts prüfst, damit dann [c]false
> [/c] zurück gegeben wird, ist mir unklar. [...]



Manchmal entfallen einem die einfachen Lösungen irgendwie... .


----------

