Bonjour, je suis débutant en java et je bloque sur un truc qui doit être évident pour la plupart d'entre vous, voila j'ai une class Fenêtre,un class Trait et une class Groupe, dans la classe Groupe il y a une méthode paint() appelé par la méthode repaint() qui dessine un trait et une méthode paint() dans la class Trait qui dessine un trait en cours de validation, la class Fenêtre affiche une fenêtre dans laquelle doit voir les traits en construction et construit, je n'arrive pas a faire en sorte que la méthode repaint() fonctionne, voici mon code, la contrainte est qu'il doit bien y a voir 3 class différentes, voici mon code, merci d'avance pour votre aide.
Class Fenêtre
********************************************************
*********************************************************************
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 import java.awt.Frame; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class Fenetre extends Frame { private static final long serialVersionUID = 1L; Trait t = new Trait(); Groupe g = new Groupe(); public Fenetre() { setLocation(400, 200); setSize(520, 400); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); addMouseListener(t); addMouseMotionListener(t); addMouseListener(g); addMouseMotionListener(g); setVisible(true); }}
*****************************************************************
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 Class Groupe import java.awt.*; import java.awt.event.*; public class Groupe extends Frame implements MouseListener,MouseMotionListener { Groupe g; private static final long serialVersionUID = 1L; private final int MAX = 10; // nombre maximum de traits private Point starts[] = new Point[MAX]; // points de départ private Point ends [] = new Point [MAX]; // points d'arrivée private Point anchor; // point de départ de la ligne courante private Point currentPoint; // point d'arrivée de la ligne courante private int currline = 0; // nombre de ligne tracées public Groupe() { //addMouseListener(g); //addMouseMotionListener(g); } public void paint(Graphics g) { //dessin des lignes validées for (int i=0; i < currline;i++) { g.setColor(new Color((int)(Math.random()*0xFFFFFF))); g.drawLine(anchor.x,anchor.y,currentPoint.x,currentPoint.y); } } public void mouseClicked(MouseEvent me) { if (me.getButton() == MouseEvent.BUTTON1 && me.getClickCount()==2) {// clique gauche = effacement de tous les traits currline = 0; setTitle(""); repaint(); System.out.println("Groupe clicked"); } if (currline >=0 && me.getButton() == MouseEvent.BUTTON3) currline=currline - 1; repaint(); setTitle(""); System.out.println("Groupe efface"); } public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e){} public void mouseDragged(MouseEvent e){} public void mouseMoved(MouseEvent e) {} public void mouseReleased(MouseEvent me) { if (currline < MAX && me.getButton() == MouseEvent.BUTTON1 && currline >=0) { ends[currline] = me.getPoint(); starts[currline] = anchor; currline++; currentPoint = null; anchor = null; repaint(); System.out.println("Groupe released"); } } }
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 Class Trait import java.awt.*; import java.awt.event.*; public class Trait extends Frame implements MouseListener, MouseMotionListener { private static final long serialVersionUID = 1L; private final int MAX = 10; // nombre maximum de traits private Point starts[] = new Point[MAX]; // points de départ private Point ends [] = new Point [MAX]; // points d'arrivée private Point anchor; // point de départ de la ligne courante private Point currentPoint; // point d'arrivée de la ligne courante private int currline = 0; // nombre de ligne tracées Trait l; public void paint(Graphics g) { // dessin de la ligne courante si elle existe if ( currentPoint != null ) { g.setColor(Color.PINK); g.drawLine(anchor.x,anchor.y,currentPoint.x,currentPoint.y); } } public Trait() { //addMouseListener(l); //addMouseMotionListener(l); } public void mousePressed(MouseEvent me) { if (currline < MAX ) { anchor = me.getPoint(); repaint(); System.out.println("Pressed"); } else { setTitle("Nombre de ligne maximum atteint"); } } public void mouseDragged(MouseEvent me) { if (currline < MAX && me.getButton()!= MouseEvent.BUTTON3 && me.getButton()!=MouseEvent.BUTTON2) { System.out.println("Dragged"); currentPoint = me.getPoint(); repaint(); } } public void mouseReleased(MouseEvent me) { if (currline < MAX && me.getButton() == MouseEvent.BUTTON1 && currline >=0) { ends[currline] = me.getPoint(); starts[currline] = anchor; currline++; currentPoint = null; anchor = null; repaint(); System.out.println("released"); } } public void mouseClicked(MouseEvent e) { System.out.println("cliqued"); } public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mouseMoved(MouseEvent arg0){} }
Partager