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 :
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 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
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);
	}
}
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
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();
	}
}
Merci d'avance de votre aide.