Bonjour à tous!
J'ai un petit problème.
Voila j'ai decider de créer un editeur de plan...
rien de très compliqué ...
->un JPanel composé d'une combo box proposant une taille, et un bouton ouvrant un JColorChooser pour choisir la couleur
->un JPanel vide appelé DrawingPane doté d'un MouseListener. la Méthode mouseCliked permet de dessiner un DessinConcession (en gro c'est un rectangle2D)
La classe DessinConcession elle, étend JComponant. Elle est doté d'un MouseMotionListener ... elle représente une tombe en dessinant un rectangle
Je voudrai pouvoir bouger mon rectangle dans le drawingPane en utilisant mouse dragged... pour cela g implémenté la méthode comme ceci :
Mais le problème c ke cela ne fonctionne pas... en effet, g l'impression ke le MouseCliked du drawingPane "cache" le MouseMotionListener du dessinConcession ... en gros, lorsque je clik sur un rectangle représentant une concession (dessinConcession) il dessine une autre concession au dessus de l'ancienne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public void mouseDragged(MouseEvent e) { x = e.getX() - longueur / 2; y = e.getY() - largeur / 2; System.out.println("MouseDragged"); }
alors g fait une autre tentative...
dans la methode mouseCliked de DrawingPane ... j'ai essayé ac un instanceof ... voici le code :
J'espere que vous aller pouvoir m'aider car la ... je désespère ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 public void mouseClicked(MouseEvent e) { if (e.getSource() instanceof DrawingPane) { Rectangle2D rect; Graphics2D g2 = (Graphics2D) getGraphics(); int longueur = 0; int largeur = Constantes.LARGEUR_TOMBE; int xRect = 0, yRect = 0; switch (choix.getNbPlaces()) { case 2 : { xRect = e.getX() - Constantes.LONGUEUR_TOMBE_2_PLACES / 2; yRect = e.getY() - Constantes.LARGEUR_TOMBE / 2; longueur = Constantes.LONGUEUR_TOMBE_2_PLACES; break; } case 4 : { xRect = e.getX() - Constantes.LONGUEUR_TOMBE_4_PLACES / 2; yRect = e.getY() - Constantes.LARGEUR_TOMBE / 2; longueur = Constantes.LONGUEUR_TOMBE_4_PLACES; break; } case 6 : { xRect = e.getX() - Constantes.LONGUEUR_TOMBE_6_PLACES / 2; yRect = e.getY() - Constantes.LARGEUR_TOMBE / 2; longueur = Constantes.LONGUEUR_TOMBE_6_PLACES; break; } } concession = new DessinConcession(xRect, yRect, longueur, largeur, choix.getColor()); concession.paintComponent(getGraphics()); System.out.println("MouseClicked"); } else System.out.println("Concession.MouseClicked"); }
Désolé pour l'indentation... merci l'HTML ...
@++
Fred
Partager