# swt table mit checkboxen: wie nachträglich im code setzen?



## sth_Weird (26. Jan 2009)

hallo 
ich plage mich gerade mit swt tabellen rum. die tabelle fülle ich per code, ist also ungebunden.
und zwar habe ich eine tabelle mit meheren bool-spalten, die ich als checkbox darstellen will. 
beim googlen bin ich auf den tableeditor gestoßen, den man jeder zelle zuweisen kann.
soweit so gut, hat geklappt!
nun aber das problem: die checkboxen sind auf defaultwerte eingestellt. in meiner shell habe ich auch noch buttons, wenn ich die klicke, soll der wert der checkboxen sich ändern. aber wie mach ich das?
theoretisch will ich die zeilen einzeln durchgehen, prüfen ob der wert in spalte x einem bestimmten kriterium entspricht, und je nachdem in spalte y oder z die checkbox selektieren oder nicht.
ich kann für ein TableItem nur setText mit spalten-parameter aufrufen, und wenn ich setText aufrufe und true reinschreiben, dann steht hinter der checkbox "true", die checked-eigenschaft bleibt unbeeinträchtigt, eigentlich ja auch logisch, woher soll sie denn auch wissen dass sie den string als checked-eigenschaft interpretieren soll? setChecked gibt es leider nur für die erste checkbox, die für die ganze tabelle gilt.
wie krieg ich nur die checkbox gemanaged? ein ähliches problem müsste es doch sicher auch sein, irgendwann mal herauszufinden, ob eine checkbox-zelle gechecket ist oder nicht? scheint mir ein übliches problem zu sein, ich hab aber in den codebeispielen die ich gefunden habe immer nur gefunden wie man das ganze anzeigt und nicht wie man die informationen wieder rauskriegt ???:L 

gruß & thx
sth_Weird


----------



## Damion (16. Nov 2011)

Hi, ich habe das selbe Problem und wundere mich, dass anscheind niemand weiß, wie man auf eine solche Checkbox nachträglich setzt.
Alternativ hätte ich noch das gleiche Problem mit Comboboxen.

Falls jemand die Antwort kennt oder weiß wie man Check- und Comboboxen auf anderen Weg in Tabellen erzeugt und später setzten kann, ich wäre wirklich dankbar


----------



## Gast2 (16. Nov 2011)

Willst du das true "nur" anzeigen als angehakt oder Kreuz oder auch editieren?
Für das Editieren gibt es einen CheckCellEditor
Eclipse RCP: JFace TableViewer

Außerdem gibt es auf der Eclipse Seite Snippets dazu, wie man Checkboxe rendert:
Für TableViewer
JFaceSnippets - Eclipsepedia

Für plain SWT
SWT Snippets

Da gibts irgendwo ein Beispiel, weiß es leider nicht auswendig


Ansonsten gibt es andere Table widgets die das schon können z.B. NatTable oder zu zeigst einfach ein eigenes Bild an


----------



## Damion (16. Nov 2011)

Vielen Dank )

Ich schätze, ich schau mich mal bei JFace um, ab und an kann man ja auch mal was neues lernen 

Wobei mir gerade eine Idee gekommen ist, wie man das Problem lösen könnte:
Jede Checkbox und Combobox zusätzlich in einem Array/Liste halten und für Änderungen dann auf dieses zugreifen. Da bekommt man die Objekte sauber raus, solange sich der Index der Tabelle nicht ändert.

Sicher keine schöne Lösung, aber auf die schelle sollte es klappen.


----------



## Gast2 (16. Nov 2011)

Damion hat gesagt.:


> Vielen Dank )
> 
> Ich schätze, ich schau mich mal bei JFace um, ab und an kann man ja auch mal was neues lernen
> 
> ...



Um was geht es dir den genau?
Die Checkboxen darstellen? Oder die Checkboxen zu editieren und dann die Values in dein Model zu bringen. Dafür gibts dann nämlich JFace Databinding.


btw. Würde SWT sowieso nur mit JFace verwenden. Das macht SWT erst richtig gut bedienbar, also schau dir den TableViewer mal an.


----------



## Damion (16. Nov 2011)

SirWayne hat gesagt.:


> Um was geht es dir den genau?
> Die Checkboxen darstellen? Oder die Checkboxen zu editieren und dann die Values in dein Model zu bringen. Dafür gibts dann nämlich JFace Databinding.



Geht darum, dass ich eine Änderung im Model in die Tabelle bringen muss. Der Wert der in der Checkbox dargestellt wird, kann nicht nur über die Tabelle gesetzt werden, sondern zur Laufzeit auch von anderer Stelle (setze Wert für alle Objekte vom Typ ...). Das Selbe mit einer Combobox.

Ich lese mich gerade JFace ein, das scheint dann doch das Mittel der Wahl zu sein.
Danke für die Antworten


----------



## Gast2 (16. Nov 2011)

Damion hat gesagt.:


> Geht darum, dass ich eine Änderung im Model in die Tabelle bringen muss. Der Wert der in der Checkbox dargestellt wird, kann nicht nur über die Tabelle gesetzt werden, sondern zur Laufzeit auch von anderer Stelle (setze Wert für alle Objekte vom Typ ...). Das Selbe mit einer Combobox.



JFace Databinding ist das Zauberwort. Auch das Mittel der Wahl zum Binden andere Widgets an ein Model.

Schau mal hier
JFace Data Binding - Tutorial


----------

