2010-12-12 63 views
3

Nous avons une application Swing que nous prévoyons de porter sur SWT/JFace. L'application Swing dessine beaucoup d'icônes (javax.swing.Icon implémentations) dans les arbres et les tableaux (icône à gauche du texte). Si je l'ai bien compris, SWT peut seulement dessiner images (alias fichiers graphiques). Quelle serait la solution la plus simple pour peindre l'icône ou la table/cellule entière? Merci d'avance.SWT: dessiner des "icônes" dans des cellules de table ou d'arbre

Répondre

3

Les images peuvent être chargées à partir de fichiers graphiques, ou elles peuvent être dessinées en mémoire.

Image image = new Image(Display.getCurrent(), width, height); 
GC gc = new GC(image); 

// draw icon using GC 

gc.dispose(); 

En ce qui affiche les dans les tableaux/arbres, l'approche la plus directe est de définir l'image sur l'élément table/arbre:

TableItem item = ... 
item.setImage(theImage); 

Il y a un inconvénient important de cette approche cependant: Sous Windows, la première fois que vous définissez une image sur un élément de table, la hauteur de cette image devient la hauteur standard pour tous les éléments de la table. Donc, si vous définissez une image plus grande, elle sera réduite à la taille de la première image. Si vous définissez une image plus petite, elle sera agrandie.

Si toutes vos images sont de la même taille, ce ne sera pas un problème.

Toutefois, si vous ne pouvez pas prédire la taille des images à l'avance, je recommande d'utiliser le custom draw API pour le rendu de vos éléments de table/arborescence. Cette approche est nettement plus intensive mais vous donne un contrôle précis sur le résultat.

+0

Merci. Y a-t-il un endroit où l'image peut être définie à la demande immédiatement avant de dessiner le nœud? – Mot

+1

Vous pouvez utiliser une table SWT.VIRTUAL et utiliser un écouteur SWT.SetData pour définir l'image et le texte si nécessaire. – qualidafial