bonjour voila j'ai un JFrame auquel j'attache un JPanel. Le but est de pouvoir dessiner un point qui suit le pointeur de la souris lorsque celle ci est enfoncée et en mouvement.
Le petit problème c'est que mon repaint() n'efface pas les points précédents et je me retrouve avec tout plein de points sur ma fenêtre.
voici mon code :
On dirait que mon repaint() ne fais que dessiner par dessus ce qui à déjà été dessiné...Or j'aimerais que les précédents points soient effacés afin de ne dessiné qu'un seul point noir au niveau du pointeur de la souris...
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 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.Image; import java.awt.SystemColor; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; public class Init{ public static void main(String args[]) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException{ Fenetre fen = new Fenetre(); } } class Fenetre extends JFrame{ private Panneau pan; public Fenetre(){ setSize(300,300); setTitle("test"); pan = new Panneau(); getContentPane().add(pan); setVisible(true); } } class Panneau extends JPanel implements MouseMotionListener{ private int bufferX=150,bufferY=150; public Panneau(){ this.addMouseMotionListener(this); } public void paintComponent(Graphics g){ super.paintComponents(g); //normalement ici, cet appel devrait effacé le précédent dessin mais il ne le fait pas g.setColor(Color.BLACK); g.fillOval(bufferX, bufferY, 5, 5); } @Override public void mouseDragged(MouseEvent arg0) { System.out.println("x : "+arg0.getX() + " et y : " + arg0.getY()); bufferX=arg0.getX(); bufferY=arg0.getY(); repaint(); } @Override public void mouseMoved(MouseEvent arg0) { // TODO Auto-generated method stub } }
Merci encore de votre aide.
Partager