bonjour,
j'ai ecris ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
public interface Dessinable {
 
    public void dessiner(Graphics g);
 
    public Rectangle getRectangle();
 
}
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
 
public abstract class FormesDessinable implements Dessinable{
 
 
    protected Rectangle rectangle;
    protected Color color = Color.BLACK;
 
    /** Creates a new instance of FormesDessinable */
    public FormesDessinable(Point position, Dimension dimention) {
        this.rectangle = new Rectangle(position,dimention);
 
    }
 
    public abstract void dessiner(Graphics g);
 
    public Rectangle getRectangle(){
        return this.rectangle;
    }
 
 
    public Point getPoint(){
        return this.rectangle.getLocation();
    }
 
    public void setPoint(Point p){
        this.rectangle.setLocation(p);
    }
}
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
 
public class SurfaceDeDessin extends JPanel implements MouseListener, MouseMotionListener{
 
    /** Creates a new instance of SurfaceDeDessin */
    public SurfaceDeDessin() {
        addMouseListener(this);
        addMouseMotionListener(this);
        setBackground(Color.WHITE);
    }
    //dessine tous les objets de ma liste d'objets cree
    public void paint(Graphics g){
        super.paint(g);
        for(FormesDessinable f :listeDesFormes)
            f.dessiner(g);
    }
 
// un click de bouton ajoute un rectangle dans la liste et 
// le repaint le dessine 
    public void mouseClicked(MouseEvent e) {
            Forme F = new Forme(new Point(e.getPoint()));
            listeDesFormes.add(F);
            repaint();
    }
//pour puvoir faire bouger l'objet je detecte si j'ai bien clické sur un objet
    public void mousePressed(MouseEvent e) {
        FormesDessinable FD = getObjet(e.getPoint());
        if (FD == null)
            return;
        objetEnDeplacement =  FD;
    }
 
    public void mouseReleased(MouseEvent e) {
        objetEnDeplacement = null;
    }
 
    public void mouseEntered(MouseEvent e) {
    }
 
    public void mouseExited(MouseEvent e) {
    }
//je fait le setPoint pour lui donner les nouvelles coordonné puis reapint
    public void mouseDragged(MouseEvent e) {
        if(objetEnDeplacement != null){
            objetEnDeplacement.setPoint(e.getPoint());
            repaint();
        }
    }
 
    public ArrayList<FormesDessinable> getListeDesFormes() {
        return listeDesFormes;
    }
//revoie l'objet a partir du point sur le quel on a cliké
public FormesDessinable getObjet(Point p){
        for(FormesDessinable F : listeDesFormes){
            if(F.getRectangle().contains(p))
                return F;
        }
        return null;
    }
    private FormesDessinable objetEnDeplacement = null;
    private ArrayList<FormesDessinable> listeDesFormes = new ArrayList<FormesDessinable>(); 
}
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
 
 
///le forme que je vais dessiner
public class Forme extends FormesDessinable {
 
    public Forme(Point position) {
        super(position,new Dimension(90,30));
    }
 
    public void dessiner(Graphics g) {
        g.setColor(color);
 
        g.drawRect(rectangle.x,rectangle.y,rectangle.width,rectangle.height);
       g.setColor(Color.white);
    }
 
 
}
le problème c'est que quand je click sur le carré pour le bouger, il bouge sans problème, mais une fois déplacé je ne peut plus le bougé que a partir de sa position initiale : je m'explique:

supposant que j'ai dessiner le carré au point 10,10 de ma surface de dessin et que ensuite je le deplace ju'squau point 80,80, il se deplace bel et bien cad qil se trouve bien au oint 80,80 mais si je veux le redeplacer et que je place le souris sur le point 80,80 il ne bouge pas. par contre si je place ma souris au point 10,10 et que je bouge la souris mon carré se redessine a ce point et il est possible alors de le deplacer, je n'arrive pas a savoir pq !!???
qq a une idée ???

mreci