2009-05-26 18 views

Répondre

7

Selon this thread, pour JFace Viewers (ListViewer, Table, Tree) au moyen de l'utilisation EraseItem et MeasureItem événements

Principe général détaillé dans l'article "Custom Drawing Table and Tree Items"

SWT.EraseItem: permet à un client Personnaliser l'arrière-plan et/ou la sélection d'une cellule et déterminer si le premier plan de la cellule doit être dessiné

alt text

+0

Merci VonC. En utilisant le code de l'exemple ci-dessus, j'ai été capable de faire ce que je voulais. –

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: merci pour vos commentaires. +1 Vous pouvez choisir votre propre message comme réponse officielle si vous le souhaitez – VonC

Questions connexes