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 :

Bouton personnalisé avec image s'affiche en noir


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2019
    Messages : 37
    Points : 40
    Points
    40
    Par défaut Bouton personnalisé avec image s'affiche en noir
    Bonjour à toutes et à tous,

    j'ai créé un bouton et je voudrais qu'il s'affiche avec l'image que je lui donne qui est un rectangle bleu ciel. A l'exécution du code, il n'y a pas d'erreur, ni d'exception levée. Néanmoins mon bouton s'affiche en noir.

    Je ne comprends pas.
    Merci pour votre aide.

    Voici le code

    Le main

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import javax.swing.JButton;
    import javax.swing.JFrame;
     
    public class BoutonInteragir extends JFrame{
     
     
        public static void main(String[] args) {
         Fenetre fen = new Fenetre();
        }
     
    }
    La classe Fenetre

    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
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Graphics;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
     
    public class Fenetre extends JFrame {
        private JPanel container = new JPanel();
        private JButton bouton = new Bouton("mon bouton");
     
        public Fenetre(){
            this.setTitle("Animation");
            this.setSize(300,300);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setLocationRelativeTo(null);
     
            container.setBackground(Color.GREEN);
     
            container.setLayout(new BorderLayout());
            container.add(bouton, BorderLayout.SOUTH);
     
            this.setContentPane(container);
            this.setVisible(true);
     
             }
        }
    La classe Bouton

    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
    import java.awt.Color;
    import java.awt.GradientPaint;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.io.File;
    import java.io.IOException;
    import javax.swing.JButton;
    import  javax.imageio.ImageIO;
     
     
    public class Bouton extends JButton {
         private String name;
         private Image img;
     
         public Bouton(String str){
            super(str);
           this.name = str;
             try {img = ImageIO.read(new File("C:\\Users\\moi\\Documents\\NetBeansProjects\\Boutoninteragir\\src\\bleu.jpg"));
     
             } catch (IOException e) {
          e.printStackTrace();}
         }
     
      public void paintComponent(Graphics g){
            Graphics2D g2d = (Graphics2D)g;
           g2d.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
            g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
            // J'indique maintenant que ce qui va être écrit sur mon 
            //bouton sera de couleur rouge
            g2d.setColor(Color.RED);
            //j'écris sur mon bouton
            g2d.drawString(this.name, this.getWidth() / 2 - (this.getWidth()
                    / 2 /4), (this.getHeight() / 2) + 5);
            } 
    }

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    Hmm... Tu pensais que ça faisait quoi, concrètement, fillRect() ? (Si ce n'est pas remplir ton bouton de la couleur définie, qui, si rien n'est précisé, sera noir par défaut.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2019
    Messages : 37
    Points : 40
    Points
    40
    Par défaut Bouton personnalisé avec image s'affiche en noir
    Bonjour Thelvin,

    ok, si je rajoute juste avant le fillRect la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     g2d.setColor(Color.YELLOW);
    mon bouton s'affiche bien en jaune.

    Ce que je voudrais, c'est qu'apparaisse sur ce bouton l'image dont je donne l'adresse absolue dans le code de la classe Bouton que je redonne ici :
    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
    public class Bouton extends JButton {
         private String name;
         private Image img;
     
         public Bouton(String str){
            super(str);
           this.name = str;
             try {img = ImageIO.read(new File("C:\\Users\\moi\\Documents\\NetBeansProjects\\Boutoninteragir\\src\\bleu.jpg"));
     
             } catch (IOException e) {
          e.printStackTrace();}
         }
     
      public void paintComponent(Graphics g){
            Graphics2D g2d = (Graphics2D)g;
           g2d.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
            g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
            // J'indique maintenant que ce qui va être écrit sur mon 
            //bouton sera de couleur rouge
            g2d.setColor(Color.RED);
            //j'écris sur mon bouton
            g2d.drawString(this.name, this.getWidth() / 2 - (this.getWidth()
                    / 2 /4), (this.getHeight() / 2) + 5);
            } 
    }
    Je n'ai aucun message d'erreur, ni d'exception levée, donc je suppose que l'image est bien trouvée, mais pas d'image sur mon bouton. Pourquoi ? That is the question..

    Merci pour vos éclaircissements.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Eh bien, peut-être que si tu ne remplissais ton bouton, ni de noir, ni de jaune, ni de rien du tout après avoir dessiné ton image, ça passerait mieux ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2019
    Messages : 37
    Points : 40
    Points
    40
    Par défaut Bouton personnalisé avec image s'affiche en noir
    Bonjour Thelvin,

    OK. En fait il faut simplement enlever la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
    Et ça marche !! Merci beaucoup !

    Vaca38

    [BOLD]Cela donne donc pour la classe Bouton :[/BOLD]

    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
    public class Bouton extends JButton {
     
         private String name;
         private Image img;
     
         public Bouton(String str){
            super(str);
           this.name = str;
             try {
     
         img = ImageIO.read(new File("C:\\Users\\moi\\Documents\\NetBeansProjects\\Boutoninteragir\\src\\fondBouton.png"));
     
             } catch (IOException e) {
          e.printStackTrace();
        }
         } 
     
         public void paintComponent(Graphics g){
            Graphics2D g2d = (Graphics2D)g;
     
            g2d.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
     
            // J'indique maintenant que ce qui va être écrit sur mon bouton sera de couleur rouge       
            g2d.setColor(Color.RED);
     
            //j'écris sur mon bouton
            g2d.drawString(this.name, this.getWidth() / 2 - (this.getWidth()
                    / 2 /4), (this.getHeight() / 2) + 5);
            } 
    }

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

Discussions similaires

  1. Boutons submit avec images
    Par valou79 dans le forum ASP
    Réponses: 8
    Dernier message: 16/12/2012, 02h37
  2. Création d'un bouton personnalisé avec QGraphicsItem
    Par sniper5g08 dans le forum Débuter
    Réponses: 8
    Dernier message: 28/04/2010, 17h29
  3. Bouton personnalisé avec un comportement bizarre
    Par laedit dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 22/04/2009, 04h01
  4. formulaire bouton submit avec image
    Par nickg dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 04/02/2008, 15h33
  5. Formulaire et bouton submit avec image mapée
    Par dody dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/12/2004, 16h00

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