2016-07-14 23 views
0

Kann jemand eine einzelne Zeile eines JFace TableViwer deaktivieren? I haben eine TableViwer wie folgt aufgebaut:Disable JFace TableViwer einzelne Zeile

TableViwer tv = new TableViwer(composite, SWT.NONE| SWT.FULL_SELECTION | SWT.BORDER); 

tv viele Zeilen haben kann, aber ich bin eine besondere einzigartige Zeile in die Tabelle dynamisch hinzugefügt (wenn eine externe Schaltfläche geklickt wird) und ich brauche nur diese Zeile deaktiviert zu machen (ausgegraut und nicht auswählbar. Nicht auswählbar kann auch durch den vorhandenen Handler erreicht werden, wenn keine andere Möglichkeit besteht).

Ich suchte in Google, aber bekam nicht viel Information. Ich bin neu bei SWT/JFace, also würde jede Hilfe geschätzt werden.

Antwort

1

Sie müssen etwas im Auswahllistener tun, um die Auswahl der Zeile zu verwerfen.

Um die Zeile grau machen Sie Ihr Label-Provider IColorProvider implementieren machen können, die Sie die beiden Methoden können definieren:

public Color getForeground(Object element); 
public Color getBackground(Object element); 

, die die Reihe färben können.

Sie können auch einen Label-Provider verwenden, der von StyledCellLabelProvider abgeleitet ist, mit dem Sie komplexere Farben definieren können.

+0

Hallo @Greg ...... Vielen Dank für Ihre Hilfe, Hintergrundfarbe wird eingestellt, wenn ich die Zeile hinzufügen. Aber jetzt habe ich ein weiteres Problem, eigentlich Benutzer hat die Option, die Daten in XML zu speichern. Wenn die Tabelle die Daten zum ersten Mal aus dem XML-Dokument lädt, wird die Hintergrundfarbe nicht geändert. – user2018023

+0

Das ist eine neue Frage. Akzeptieren Sie diese Antwort und stellen Sie eine neue Frage mit einer minimalen Version des Problemcodes. –

+0

Danke für Ihre Hilfe @Greg, ich habe Ihre Antwort akzeptiert. – user2018023