Bonjour,
J'ai créé un bouton qui lorsqu'on clique dessus change de couleur.
Pour cela je lui ajoute un JPanel contenant l'image voulu par un simple add()
J'aimerais que le texte de mon bouton reste affiché par dessus ce panel, est-ce posible?
Bonjour,
J'ai créé un bouton qui lorsqu'on clique dessus change de couleur.
Pour cela je lui ajoute un JPanel contenant l'image voulu par un simple add()
J'aimerais que le texte de mon bouton reste affiché par dessus ce panel, est-ce posible?
Salut,
Pour donner une reponse de normand (deolé pour eux)
La methode setIcon ne te suffirait pas ?
Ou le simple constructeur suivant http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JButton.html#JButton(java.lang.String,%20javax.swing.Icon)
Non le probleme c'est pas l'imageIcon mais le texte qui ne s'affiche pas dessus![]()
oui mais si tu fais ca :
le texte est bien sur l'icone (bon faut pas que l'icone soit trop barbouillée ou on voit plus le texte mais c'est un autre probleme)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 JButton btn = new JButton( "HelloWorld" ); ImageIcon icone = new ImageIcon( "_logo.png" ); btn.setIcon( icone ); btn.setIconTextGap( - icone.getIconWidth() );
Désolé mais j'y arrive pas.
En fait j'ai créé un jbutton standard.
Lorsque l'on clique dessus j'essai de le faire changer d'apparence avec une image.
Puis, lorsqu'on reappui il retrouve sa forme original.
Ma premiere idée a été d'essayé d'ajouter un imageIcon à mon bouton mais j'y suis pas arrivé du fait de la non visibilité du texte.
J'ai une autre idée qui est de créer tous les boutons avec une image null par defaut puis après un clique la rajouter mais là encore echec:
OU EST L'ERREUR??
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 public class Selection extends JButton { private Image image; private boolean actif; /** * Le constructeur de la classe. * @param string */ public Selection(String string) { super(); try { image = ImageIO.read(new File("testa.png")); } catch (IOException e) { image = null; System.err.println("Fichier invalide"); } actif=false; // setOpaque(false); // setFocusPainted(false); // setText(string); setVisible(true); setBackground(UIManager.getColor("JButton.background")); } /* * (non-Javadoc) * @see javax.swing.JComponent#paintComponent(java.awt.Graphics) */ public void paintComponent(Graphics g) { super.paintComponent(g); ; if(actif) g.drawImage(image, 0, 0, null); } public void changeColor() { if(!actif) activeFont(); else desactiveFont(); } private void desactiveFont() { setOpaque(true); setFocusPainted(false); actif=false; repaint(); } private void activeFont() { setOpaque(false); setFocusPainted(false); actif=true; setContentAreaFilled(false); repaint(); } }
Après quelque modification, ça marche parfaitement:
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 public class Selection extends JButton { /* Numero de serialisation par defaut. */ private static final long serialVersionUID = 1L; /* Logo de la société (format png)*/ private Image image; private boolean actif; /** * Le constructeur de la classe. * @param string */ public Selection(String string) { super(); try { image = ImageIO.read(new File("testa.png")); } catch (IOException e) { image = null; System.err.println("Fichier invalide"); } actif=false; setFocusable(false); setText(string); setVisible(true); } /* * (non-Javadoc) * @see javax.swing.JComponent#paintComponent(java.awt.Graphics) */ public void paintComponent(Graphics g) { if(actif) g.drawImage(image, 0, 0, null); super.paintComponent(g); } /** Permet de changer l'image du bouton. */ public void changeColor() { if(!actif) activeFont(); else desactiveFont(); } /** Desactivation. */ private void desactiveFont() { actif=false; setContentAreaFilled(true); repaint(); } /** Activation. */ private void activeFont() { actif=true; setContentAreaFilled(false); setText(this.getText()); repaint(); } }
Partager