2010-11-19 28 views
2

Je crée une application avec Java et SWT, et j'ai un espace de travail généré sur un canevas. J'ai besoin de faire en sorte que certaines zones (contrôles) sur le canevas déclenchent un événement lorsque vous les survolez ou que vous les cliquiez. Bien sûr, cela pourrait être fait en écoutant le MouseMoveEvent et en vérifiant l'emplacement de la souris manuellement, mais je voudrais savoir si SWT fournit un moyen plus facile de le faire.Est-ce que SWT Canvas fournit des outils pour les zones actives de déplacement/clic de la souris?

Merci

Répondre

0

Merci pour la réponse, Paul. J'ai finalement créé une ArrayList d'objets Rectangle pour chaque contrôle. Chaque fois que l'événement mousemove se déclenche, je parcours chaque Rectangle et appelle Rectangle.contains() avec les coordonnées de la souris. Cette solution s'est avérée très organisée. Dans mon cas, les événements de contrôle sont homogènes (ils font tous la même chose), mais si quelqu'un a plusieurs actions de contrôle, Rectangle.data peut être utilisé pour contenir un objet Command.

2

Pour autant que je sache, il n'y a pas de possibilité d'automatiser cela. Vous devrez enregistrer les écouteurs de souris et rechercher les coordonnées x & y manuellement.

Une approche différente peut être l'ajout d'objets individuels Canvas sur un boîtier Canvas. De cette façon, vous pouvez ajouter des écouteurs aux contrôles individuels. Cela utilisera cependant plus de mémoire (car l'objet sous-jacent a un tampon, ainsi que le contrôle en haut) et le redessin sera plus gourmand en ressources processeur. Ma préférence personnelle va à la première technique.