Bonjour, je suis débutant en Java, et je suis le tutoriel de openclassrooms dessus.
En son sein, il est décrit une classe de bouton dans laquelle lorsque l'on clique dessus, que l'on passe dessus, on qu'on relâche le bouton, la couleur de fond est modifié à l'aide d'un Graphics2D et d'un GradientPaint.
Dans ce que j'ai fait (qui n'est pas exactement pareil que le tutoriel, lui utilisant des images et moi des GradientPaint), tout fonctionne sauf l'initialisation : en effet, de base, le bouton a juste le nom affiché dessus mais n'a pas de fond. A partir du moment où je passe dessus, les fonds se mettent correctement mais avant avant ça, le fond reste gris. Quelle erreur donc ai-je fait ?
Je précise avoir essayé plusieurs choses, comme avoir appelé repaint après l'initialisation du GradientPaint, mais rien n'y fait ...

Je met mon code si dessous :
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
 
public class Bouton extends JButton implements MouseListener{
	private String name ;
	private GradientPaint gp ;
	public Bouton(String name){
		super(name) ;
		gp = new GradientPaint(0,0, Color.BLUE,0, this.getHeight(), Color.CYAN, false) ; 
		this.name = name ;
		this.addMouseListener(this);
	}
	public void paintComponent(Graphics g) {
		Graphics2D g2d = (Graphics2D) g ;
		g2d.setPaint(gp);
		g2d.fillRect(0, 0, getWidth(), getHeight());
		g2d.setColor(Color.white);
		g2d.drawString(name,7 * this.getWidth()/16, 3*this.getHeight()/4);
	}
	public void mouseClicked(MouseEvent arg0) {
	}
	public void mouseEntered(MouseEvent arg0) {
		gp = new GradientPaint(0,0, Color.RED,0, this.getHeight(), Color.YELLOW, false) ;
 
	}
	public void mouseExited(MouseEvent arg0) {
		gp = new GradientPaint(0,0, Color.BLUE,0, this.getHeight(), Color.CYAN, false) ;
	}
	public void mousePressed(MouseEvent arg0) {
		gp = new GradientPaint(0,0, Color.GREEN,0, this.getHeight(), Color.ORANGE, false) ;
 
	}
	public void mouseReleased(MouseEvent mouse) {
		if (mouse.getX() > 0 && mouse.getX() < getWidth() && mouse.getY() > 0 && mouse.getY() < getHeight() )
			gp = new GradientPaint(0,0, Color.RED,0, this.getHeight(), Color.YELLOW, false) ;
		else gp = new GradientPaint(0,0, Color.BLUE,0, this.getHeight(), Color.CYAN, false) ;
	}
}