salut
je vx realiser une JButton avec une image de font
j ai deja essayé avec
mais ce que je veux moi c est que l image prend tte la dimesion de JButtonCode:JButton button =new JButton(new ImageIcon("image.jpg");
merci d avance
Version imprimable
salut
je vx realiser une JButton avec une image de font
j ai deja essayé avec
mais ce que je veux moi c est que l image prend tte la dimesion de JButtonCode:JButton button =new JButton(new ImageIcon("image.jpg");
merci d avance
l'idéal [EDIT : ou plutôt, une simple façon de faire, je ne dis pas que c'est la meilleure :aie: ], c'est de surcharger la méthode paintComponent de JButton en faisant un truc dans le genre :
la transformation permet en rajoutant une méthode de bien donner les bonnes dimensions à l'image. En utilisant une image transparente (exemple avec un png) on pourra voir le texte du bouton, sinon, je pense qu'il sera couvert...Code:
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 import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JButton; public class JBackButton extends JButton { BufferedImage aBackgroundImage; AffineTransform aTransform; public JBackButton(String test){ super(test); aTransform=new AffineTransform(); try { aBackgroundImage=ImageIO.read(new File("image.jpg")); } catch (IOException e) { // TODO Bloc catch auto-généré e.printStackTrace(); } this.setOpaque(false); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); aTransform.setToIdentity(); //ici, on met les transformations de mise à l'échelle et centrage Graphics2D g2d=(Graphics2D) g; g2d.drawRenderedImage(aBackgroundImage,aTransform); } }
A voir... J'espère avoir pu te donner une piste :mrgreen:
ou alors tu connais la taille du bouton et tu fais une image qui colle à cette taille
merci dazz_x
est ce qu il y a pas un autre moyen?
s il y a d autres propositions ,elles seront les bienvenues
merci d avance
et pour que ça soit que l'image, sans bouton visible:Code:button.setBorder(null);
Code:
1
2
3
4
5 button.setOpaque(false); button.setFocusPainted(false); button.setBorderPainted(false); button.setContentAreaFilled(false); button.setBorder(null);
Tu peux aussi définir une nouvelle UI qui peint l'icône au fond, mais ça demandera plus de travail.
merci ®om
j vais essayer avec ce que vs m'avez proposé
merci pour votre aide
ça a macrher avec CODE]button.setBorder(null)[[/CODE]
par ontre mieux vaut un
qu'unCode:setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
Code:setBorder(null);
merci sinok
mais quelle est la diffrence entre les deux solutions ?
Grosso modo tu ne pourras pas prévoir ce que va faire le composant au repaint() (ou updateUI()) avec un setBorder(null) car une border par défaut sera affectée au composant, alors qu'avec un setBorder(BorderFactory.createEmptyorder(0,0,0,0) tu es sûr du résultat
cf: http://bugs.sun.com/bugdatabase/view...bug_id=4192869
merci sinok
j ai saisi la difference