Pour information, lorsque vous utilisez l'écouteur PaintListener pour ajouter des éléments graphiques à des composants, faites attention lorsque vous souhaitez avoir accès aux dimensions du cadre de la zone de dessin.
Il y a deux façons d'obtenir la taille de cette zone de dessin :
- Soit en utilisant les attributs width et height de l'objet PaintEvent, passé en paramètre de la méthode paintControl.
- Soit en utilisant la source de l'écouteur qui devrait être normalement de type Control. Ainsi par l'intermédiaire de la propriété bounds, il y a possibilité d'avoir accès à la hauteur et à la largeur.
Pour résoudre ce problème, je vous recommande de passer par les dimensions de la source pour déterminer les limites de la zone de dessin.
Pour résumer, il ne faut pas utiliser le code ci-dessous (où e est de type PaintEvent) :
int width = e.width;
int height = e.height;
Mais le code ci-dessous pour déterminer la hauteur et la largeur de la zone de dessin :
int width = 0;Tout ça pour dire que je ne faisais pas attention depuis un certain moment et j'utilisais bêtement les dimensions fournis par l'objet PaintEvent.
int height = 0;
if (e.getSource() != null) {
Control currentSource = (Control)e.getSource();
Rectangle bounds = currentSource.getBounds();
width = bounds.width;
height = bounds.height;
}
PS : les codes sources du support de cours concernant la partie SWT vont être modifiés.
Aucun commentaire:
Enregistrer un commentaire