Bonsoir à tous,

je débute dans le développement d'interfaces graphiques en java. Et j'ai un problème qui me ronge depuis un bout de temps...

Voilà j'essaye de créer une fonction qui me permettra de tracer des droites... (comme sur Paint) j'ai trouvé comment tracer des courbes et je bloque sur les droites...
Si quelqu'un pourrait svp me dire quel est le problème dans mon code...
Voila la classe qui permet de tracer une droite
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JPanel;
 
    public class Droite extends JPanel implements MouseMotionListener,MouseListener
    { 
        Vector<Rectangle2D> lines;
        boolean ligneEncours;
        Point2D p1;
        Point2D p2;
        private Graphics c;
 
        public Droite(Graphics g)
        {
            super();
            c = g;
            lines = new Vector<Rectangle2D>();
            ligneEncours = false;
            this.addMouseListener(this);
            this.addMouseMotionListener(this);
        }
 
        @Override
        public void paint(Graphics g)
        {
            super.paint(g);
 
            if(ligneEncours)
            {
                g.setColor(Color.GRAY);
                g.drawLine((int)p1.getX(),(int)p1.getY(),(int)p2.getX(),(int)p2.getY());
            }
            g.setColor(Color.BLACK);
            for(int i = 0 ; i < lines.size();i++)
            {
                Rectangle2D r =  lines.get(i);
                g.drawLine((int)r.getX(),(int)r.getY(),(int)r.getWidth(),(int)r.getHeight());
            }
        }
 
        public void mouseDragged(MouseEvent e)
        { 
            if(ligneEncours)
            {
                p2 = e.getPoint();
                repaint();
            }
        }
 
        public void mousePressed(MouseEvent e)
        {
            ligneEncours = true;
            p1 = e.getPoint();
        }
 
        public void mouseReleased(MouseEvent e)
        {
            if(ligneEncours)
            {
            Rectangle r = new Rectangle((int)p1.getX(),(int) p1.getY(), e.getX(), e.getY());
            lines.add(r);
            ligneEncours = false;
            }
            repaint();
        }
 
        public void mouseExited(MouseEvent e)
        {
            ligneEncours = false;
        }
 
        public void mouseEntered(MouseEvent e){}
        public void mouseMoved(MouseEvent e){}
        public void mouseClicked(MouseEvent e){}
    }
Lafonction dans une autre classe qui fait appel à la classe Droite qui s'appelle Dessinfigure
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
public void traceligne(Color c){
		Graphics g = getGraphics();
		g.setColor(c);
		Droite tl = new Droite(g);
		setVisible(true);
		this.addMouseMotionListener(tl);
		this.addMouseListener(tl);
	}