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 :

insérer une image dans un panel


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 13
    Par défaut insérer une image dans un panel
    Bonjour,

    Je voulais inserer une image dans mon panel donc j'ai utilisé cette méthode:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void paint(Graphics g)
        {
             Image img1;
         img1 = Toolkit.getDefaultToolkit().getImage("image.gif" );
         g.drawImage(img1,0,0,50,50,this);
     
        }
    l'image s'affiche mais les text field que j'ai dans mon panel n'apparaissent plus juste les labels qui apparaissent. je comprend pas pourquoi.

    merci de répondre

  2. #2
    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
    Alors plusieurs choses.
    Quand tu changer la façon dont ton JComponent (un JPanel ici) se dessine, il faut redéfinir paintComponent et non paint. En effect paint fait appel entre autres à paintComponent, mais également aux méthodes de dessin des bordures ou encore aux méthodes de dessin des composant situés dans le composant (les composants fils).

    donc remplaces

    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    protected void paintComponent
    de plus il vaut mieux éviter de charger une image dans une des méthodes de dessin, en effet une opération IO est assez lourde niveau cout, et donc aura tendance à faire ramer le thread swing, et de rendre une interface cacrrément lente.

    Charges plutôt ton image à la construction de ta classe, tu pourrais uassi remplacer Toolkit.getDefaultToolkit().getImage(...) par ImageIO.read de façon avantageuse (méthode permettant de charger les images de façon synchrone, remontant des exceptions en cas de fichier non trouvé/incorrect...

    Puis ne pas oublier l'appel à la méthode de la classe mère.

    Un truc dans ce style serait plus correct:
    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
     
    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
     
    import javax.imageio.ImageIO;
    import javax.swing.JComponent;
     
     
    public class TestImage extends JComponent{
     
        private BufferedImage img;
        public TestImage() {
            try {
                img = ImageIO.read(getClass().getResource("/resources/icons/medium/test.gif"));
                System.out.println("img: "+img);
            } catch (IOException e) {
                // TODO Bloc catch auto-généré
                e.printStackTrace();
            }
        }
     
        @Override
        protected void paintComponent(Graphics g) {
            // TODO Raccord de méthode auto-généré
            super.paintComponent(g);
            g.drawImage(img, 0, 0, 50,50, null);
        }
    }

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 13
    Par défaut
    Presque ça marche.
    Merci bien pour votre réponse.

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

Discussions similaires

  1. Insérer une image dans une application
    Par Invité dans le forum JBuilder
    Réponses: 4
    Dernier message: 23/04/2006, 18h19
  2. [MFC]Insérer une image dans un CListCtrl
    Par DestyNov@ dans le forum MFC
    Réponses: 8
    Dernier message: 04/03/2005, 14h36
  3. Comment insérer une image dans une cellule d'un TDrawGrid ?
    Par kanux dans le forum Composants VCL
    Réponses: 4
    Dernier message: 15/01/2005, 18h58
  4. [Crystal Reports 9] comment insérer une image dans Détails
    Par VVE dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 22/10/2003, 17h06

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