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 :

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");
}
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.

alors g fait une autre tentative...
dans la methode mouseCliked de DrawingPane ... j'ai essayé ac un instanceof ... voici le code :

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");
 
}
J'espere que vous aller pouvoir m'aider car la ... je désespère ...

Désolé pour l'indentation... merci l'HTML ...


@++

Fred