In einer elipse-rcp-Anwendung setze ich die Hintergrundfarbe für eine Zeile in einer jface-Tabelle, aber die Auswahl soll diese Farbe nicht ändern. Ich möchte die Farbänderung für eine ausgewählte Zeile angeben können.Wie ändere ich die Hintergrundauswahlfarbe für eine jface-Tabelle?
4
A
Antwort
7
Nach this thread, für JFace Viewers
(ListViewer
, Table
, Tree
) mittels Verwendung EraseItem
und MeasureItem
Ereignisse
Allgemeiner Grundsatz im Artikel beschrieben "Custom Drawing Table and Tree Items"
SWT.EraseItem
: ermöglicht einen Client custom zeichnet den Hintergrund und/oder die Auswahl einer Zelle und beeinflusst, ob der Vordergrund der Zelle gezeichnet werden soll
6
table.addListener(SWT.EraseItem, new Listener() {
public void handleEvent(Event event) {
event.detail &= ~SWT.HOT;
if ((event.detail & SWT.SELECTED) == 0) return; /// item not selected
Table table =(Table)event.widget;
TableItem item =(TableItem)event.item;
int clientWidth = table.getClientArea().width;
GC gc = event.gc;
Color oldForeground = gc.getForeground();
Color oldBackground = gc.getBackground();
gc.setBackground(colorBackground);
gc.setForeground(colorForeground);
gc.fillRectangle(0, event.y, clientWidth, event.height);
gc.setForeground(oldForeground);
gc.setBackground(oldBackground);
event.detail &= ~SWT.SELECTED;
}
});
+0
@ks: Danke für dieses Feedback. +1. Sie können Ihren eigenen Beitrag als offizielle Antwort wählen, wenn Sie möchten – VonC
Dank VonC. Mit dem Code aus dem obigen Beispiel konnte ich tun, was ich wollte. –