2009-05-26 7 views

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

alt text

+0

Dank VonC. Mit dem Code aus dem obigen Beispiel konnte ich tun, was ich wollte. –

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