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

Composants Java Discussion :

JButton personnalisé (image de fond et une icone)


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Par défaut JButton personnalisé (image de fond et une icone)
    bonjour tout le monde, je veux savoir s'il y un moyen d'avoir un Jbutton avec deu image une de fond, et une autre comme icon,et je veux que les deux soient superposées sans qu'une cache l'autre.
    j'ai pas mal cherché dans le net, j'ai conclu qu'il faut créer une classe fille de Jbutton où on surdéfinit la méthode paintComponent, ensuite je fait appel a mon bouton mais l'image définit sur mon nouveau type cache toujour l'icone.
    voila mon nouveau type:

    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
    import java.awt.Graphics;
    import java.awt.Image;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
     
    public class myButton extends JButton { // !!! on doit étendre le composant dans lequel on veut insérer une image de fond
     
       private Image img;
       private String imageName;
     
       //Un constructeur pour choisir plus simplement l'image
       public SDZ(String imageName) {
           img = new ImageIcon(getClass().getResource(imageName)).getImage();
       }
     
       //On doit redéfinir la méthode paintComponent() pour les composant swing !!! et paint() pour awt
       @Override
       protected void paintComponent(Graphics g) {
           super.paintComponent(g);
           if (img == null) return;
           g.drawImage(img, 0, 0, getWidth(), getHeight(), this); 
     
       }
     
    }


    pour mettre l'icone:


    myButton mb=new myButton("deg.png");
    ImageIcon icon= new ImageIcon(getClass().getResource("nohit.png"));
    mb.setIcon(icon);


    mon problème c'est que mon icon est toujours caché par l'image du fond que j'ai mis dans le constructeur de mon nouveau button, dans ce cas "deg.png"

    Merci d'avance

  2. #2
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    salut,

    tu pourrais te charger de dessiner ton icône toi-même à l'intérieur de la méthode paintComponent

    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
     
    import java.awt.Graphics;
    import java.awt.Image;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
     
    public class MyButton extends JButton { // !!! on doit étendre le composant dans lequel on veut insérer une image de fond
     
       private Image img;
       private String imageName;
     
       //Un constructeur pour choisir plus simplement l'image
       public MyButton(String imageName) {
           img = new ImageIcon(getClass().getResource(imageName)).getImage();
       }
     
       //On doit redéfinir la méthode paintComponent() pour les composant swing !!! et paint() pour awt
       @Override
       protected void paintComponent(Graphics g) {
           //super.paintComponent(g);
           if (img == null) return;
           g.drawImage(img, 0, 0, getWidth(), getHeight(), this);
           getIcon().paintIcon(this, g, (getWidth()-getIcon().getIconWidth())/2, (getHeight()-getIcon().getIconHeight())/2);
     
       }
     
    }
    voici la ligne ajoutée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getIcon().paintIcon(this, g, (getWidth()-getIcon().getIconWidth())/2, (getHeight()-getIcon().getIconHeight())/2);
    la méthode getIcon(..) prends comme paramètre le composant où on veut dessiner, le Graphics avec lequel on va dessiner, et l'emplacement de l'icône (x, y), ici j'ai fait en sorte qu'elle soit au centre

  3. #3
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Par défaut
    merci bien, c'est tout ce que j'en ai besoin.

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

Discussions similaires

  1. image de fond dans une JFrame
    Par intik dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 22/11/2006, 19h52
  2. Réponses: 6
    Dernier message: 21/09/2006, 17h33
  3. Rollower sur l'image de fond d'une Div
    Par Galaad dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/09/2006, 21h20
  4. Etirer une image de fond dans une cellule
    Par dreamanoir dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 13/07/2005, 14h39
  5. Réponses: 4
    Dernier message: 03/05/2005, 09h03

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