Deplacer les formes
Déplacer les formes
On reprend l'interface développée dans les exercices précédents mais on voudrait en plus pouvoir déplacer une quelconque des formes déjà tracées. On souhaite faire ce déplacement en cliquant sur la forme que l'on veut déplacer avec le bouton du milieu de la souris, puis en "tirant" sur la forme avec ce bouton enfoncé.
Indications
- On ajoutera une méthode estDedans(int a, int b) à la classe Forme qui retournera true ou false selon que le point de coordonnées (a, b) se trouve dans le rectangle circonscrit à la forme modélisée.
- On définira dans la classe PanneauDessin une méthode :
- Forme selectionne(int a, int b)
Si le point de coordonnées (a, b) appartient au rectangle circonscrit à l'une des formes déjà tracées, cette méthode retournera l'objet Forme correspondant (ou l'un d'entre eux s'il y en a plusieurs), sinon elle retournera la valeur null.
- Un attribut de type Forme de la classe PanneauDessin pourra mémoriser une forme sélectionnée.
- La méthode statique isMiddleMouseButton(MouseEvent evt) de la classe SwingUtilities retourne true si le bouton qui a provoqué l'événement est le bouton du milieu et false sinon..
- On ajoutera un MouseMotionListener à PanneauDessin.
- Un MouseMotionListener déclare les méthodes :
- public void mouseMoved(MouseEvent evt);
- public void mouseDragged(MouseEvent evt);
- Si un listener de type MouseMotionListener est ajouté à un composant et si on bouge la souris avec un bouton enfoncé, alors, à intervalles réguliers (et très courts) la méthode mouseDragged du listener est exécutée après avoir reçu en paramètre un MouseEvent correspondant à l'événement.
Corrigé
et la classe Forme actualisée
Irene Charon
Last modified: Wed Jul 23 11:11:21 MEST 2003