Bonjour a tous,
Je souhaiterai faire un casse brique en java.
J'ai commencé à développé quelques classes mais je rencontre déjà des problèmes.
J'ai donc commencé par la barre. Pour la faire bouger, j'ai ajouté un MouseMotionListener.
J'ai effectuer quelques test pour me rendre compte que la méthode move était bien appelée mais que la barre ne se redessine pas.
Il s'agit donc d'un problème de rafraîchissement. J'utilise la méthode repaint() qui ne fonctionne pas dans ce cas présent.
Voici ma classe barre qui dessine la barre :
Voici ma classe Panel qui gère l'application :
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 public class Bar{ private double barX; private double barY; private int barWidth; private int barHeight; private Rectangle barBloc; public Bar(double x, double y, int a, int b) { barX = x; barY = y; barWidth = a; barHeight = b; barBloc = new Rectangle((int)barX, (int)barY, barWidth, barHeight); } //draw the bar public void Draw(Graphics g){ g.setColor(Color.green); g.fillRect(barBloc.x, barBloc.y, barBloc.width, barBloc.height); } //move the bar public void move(int x){ if( x > 0 && x < 690) { System.out.println(getBar_x() + " " + x); barX = x; barBloc.setLocation(x, (int)barY ); } }
Voici ma classe Surface qui gère l'affichage des deux objets et écoute le curseur :
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 public class Panel extends JFrame { JPanel surface = null; public Panel(){ surface = new Surface(); surface.setPreferredSize(new Dimension(800, 600)); add(surface); pack(); setTitle("Casse brique"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); setVisible(true); } }
Merci d'avance de votre aide.
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 public class Surface extends JPanel implements MouseMotionListener{ private Bar bar; private Ball ball; public void paintComponent(Graphics g2) { super.paintComponent(g2); bar = new Bar(300,540,100,10); ball = new Ball(100,100,8,8,2,2); bar.Draw(g2); ball.Draw(g2); } public Surface(){ addMouseMotionListener(this); } @Override public void mouseDragged(java.awt.event.MouseEvent e) {} @Override public void mouseMoved(java.awt.event.MouseEvent e) { if(bar != null) bar.move(e.getX()); repaint(); } }
Partager