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>(); }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:
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); } }
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
Partager