IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

JButton avec image comme background


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé Avatar de ferrero
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 75
    Par défaut JButton avec image comme background
    salut
    je vx realiser une JButton avec une image de font

    j ai deja essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JButton button =new JButton(new ImageIcon("image.jpg");
    mais ce que je veux moi c est que l image prend tte la dimesion de JButton

    merci d avance

  2. #2
    Membre expérimenté Avatar de dazz_x
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 269
    Par défaut
    l'idéal [EDIT : ou plutôt, une simple façon de faire, je ne dis pas que c'est la meilleure ], c'est de surcharger la méthode paintComponent de JButton en faisant un truc dans le genre :
    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
     
    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);
     
    	}
    }
    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...
    A voir... J'espère avoir pu te donner une piste

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Par défaut
    ou alors tu connais la taille du bouton et tu fais une image qui colle à cette taille

  4. #4
    Membre confirmé Avatar de ferrero
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 75
    Par défaut
    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

  5. #5
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    button.setBorder(null);
    et pour que ça soit que l'image, sans bouton visible:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    button.setOpaque(false);
    button.setFocusPainted(false);
    button.setBorderPainted(false);
    button.setContentAreaFilled(false);
    button.setBorder(null);

  6. #6
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Tu peux aussi définir une nouvelle UI qui peint l'icône au fond, mais ça demandera plus de travail.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  7. #7
    Membre confirmé Avatar de ferrero
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 75
    Par défaut
    merci ®om

    j vais essayer avec ce que vs m'avez proposé

  8. #8
    Membre confirmé Avatar de ferrero
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 75
    Par défaut
    merci pour votre aide

    ça a macrher avec CODE]button.setBorder(null)[[/CODE]

  9. #9
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    par ontre mieux vaut un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
    qu'un


  10. #10
    Membre confirmé Avatar de ferrero
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 75
    Par défaut
    merci sinok

    mais quelle est la diffrence entre les deux solutions ?

  11. #11
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    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

  12. #12
    Membre confirmé Avatar de ferrero
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 75
    Par défaut
    merci sinok

    j ai saisi la difference

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. JButton avec image background et texte.
    Par SuperCoquillette dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 26/05/2011, 09h27
  2. comment faire un simple menu avec images en background
    Par cortex024 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 03/05/2007, 20h57
  3. Cadres avec image comme encadrement
    Par Nibor dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 11/12/2006, 19h57
  4. JButton avec image/texte
    Par iutcien dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 23/11/2006, 11h10
  5. image comme background ?
    Par Le Pharaon dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 24/08/2006, 23h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo