2010-03-31 5 views
6

Sto lavorando su un albero SWT simile a quello here, tuttavia, voglio essere in grado di mostrare + segni in alcuni casi anziché - per un elemento ad albero espanso. È possibile ?Come modificare l'albero SWT più/meno icone

In caso contrario, l'API di Windows contiene icone personalizzate per lo stato espanso/compresso di un elemento dell'albero?

+0

La soluzione è utilizzare il messaggio TVE_EXPANDPARTIAL in Windows. – Ali

risposta

2

Il componente Albero SWT utilizza il widget Albero nativo, se disponibile, ad esempio in caso di Windows: utilizza il widget nativo su Linux (a seconda del motore dell'interfaccia utente utilizzato), può creare un albero personalizzato autonomamente.

Sul sistema operativo in cui si utilizza widget di albero nativo, non è possibile personalizzare l'icone + e -.

Come suggerito da Ali (vedere http://msdn.microsoft.com/en-us/library/bb773568%28VS.85%29.aspx), è possibile utilizzare TVE_EXPANDPARTIAL, ma tenere presente che il codice sarà dipendente dal sistema operativo (anche nelle versioni di Windows).

È tuttavia possibile che si desideri utilizzare un'immagine personalizzata, utilizzando il metodo getImage() nello TreeContentProvider per indicare il contrario piuttosto che fare affidamento su TVE_EXPANDPARTIAL. Ciò assicurerà inoltre che il tuo codice sia indipendente dal sistema operativo.

+0

Grazie! TreeContentProvider non fa parte di SWT però ... Non sei sicuro di come lo faresti, ma fai notare che il codice deve essere dipendente dal sistema operativo. Ho finito per implementare una versione a 64 bit e una sottoclasse SWTTree a 32 bit. – Ali

+0

Ah! Dimenticavo ... fa parte di JFace. La classe correlata è TreeViewer. –

+1

setImage in realtà non cambia l'icona +/-. Aggiunge un'immagine a destra di +/- icona. – Ali