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

 Java Discussion :

afficher une image dans un JPanel


Sujet :

Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 423
    Points : 133
    Points
    133
    Par défaut afficher une image dans un JPanel
    Bonjour,

    Je veux créer un composant JPanel avec une image, voici mon code :

    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
    import java.awt.*;
    import javax.swing.*;
     
     
    public class Picture extends JPanel {
     
        private Image img;
     
        public Picture(String file) {        
            img = new ImageIcon(getClass().getResource(file)).getImage();
            repaint();
        }
     
        @Override
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            if (img == null) return;
            int w = img.getWidth(this);
            int h = img.getHeight(this);
            boolean zoom = (w > getWidth() || h > getHeight());
            if (zoom) g.drawImage(img, 0, 0, getWidth(), getHeight(), this);
            else g.drawImage(img, (getWidth()-w)/2, (getHeight()-h)/2, this);
        }
    }
    En fait ce code n'est pas de moi, il vient d'ici:
    http://cui.unige.ch/~deriazm/javasources/Picture.java

    Mais quand je le lance, j'ai une erreur dans le constructeur à la ligne img = new ImageIcon ...
    avec le message 'Exception in thread "main" java.lang.NullPointerException'

    Qu'est ce que j'ai oublié ?

    merci,

    Nico

  2. #2
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    As tu verifié que file n'est pas nulle?
    Et où se trouve le fichier image. Parce ton code suppose que l'image se trouve dans un jar.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Image image;
    image=java.awt.Toolkit.getDefaultToolkit().getImage(getClas().getClassLoader().getResource("images/play.gif"));
    Le fichier images/play.gif se trouve dans le jar.
    Mais si le fichier dans le meme dossier que ton programme, tu peux seulement faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Image image;
    image=java.awt.Toolkit.getDefaultToolkit().getImage("images/play.gif");

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 423
    Points : 133
    Points
    133
    Par défaut
    OK, ça marche en utilisant le toolkit, vu que mon image est sous forme de fichier dans un répertoire, mais le panel crée n'a pas la taille de l'image, ce qui fait que l'image est minuscule : réduite à 10x10 (valeurs de getWidth() et getHeight() dans le paintComponent().

    Comment ajuster la taille du JPanel à la taille de l'image ?

    Nico

  4. #4
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    tu peux regler la taille du jpanel avec la methode setSize.

  5. #5
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Citation Envoyé par darrylsite Voir le message
    tu peux regler la taille du jpanel avec la methode setSize.
    Pas vraiment, ça dépend du layout utilisé.
    Il faudrait régler la taille de la JFrame ou du JDialog en fonction.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    tu dois surcherger les méthode getPreferedSize(), getMinimumsize() et getMaximumSize() pour que ça colle avec la taille de ton image

Discussions similaires

  1. Afficher une image dans jpanel
    Par lostsoul dans le forum Général Java
    Réponses: 6
    Dernier message: 12/05/2009, 04h07
  2. Debutant,comment afficher une image dans un Jpanel
    Par dilamax_1 dans le forum Graphisme
    Réponses: 1
    Dernier message: 27/04/2008, 16h05
  3. Afficher une image dans un JPanel
    Par @omzo dans le forum AWT/Swing
    Réponses: 10
    Dernier message: 19/05/2007, 00h19
  4. Afficher une image dans un JPanel
    Par yaya0057 dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 04/04/2007, 00h10
  5. comment afficher une image dans un jpanel ?
    Par 180degrés dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 18/04/2006, 15h33

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