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 :

Afficher une image dans un JPanel


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 72
    Points : 62
    Points
    62
    Par défaut Afficher une image dans un JPanel
    Bonjour,
    je fais une programme qui me permet de rechercher une photo dans un dossier puis de l'afficher dans un JPanel. Pour cela j'utilise une instance d'une classe Screen que j'ai défini moi même et que j'ai fait dérivé de JPanel et puis j'ai défini dans cette classe deux fonctions (setBackgroundIcon(ImageIcon v) et getBackgroundIcon()) qui me permettent d'accéder et d'assigner une ImageIcon comme image du background du JPanel (instance de Screen).
    La maière dont j'ai fait l'assignation est la suivante:

    ....................
    private Screen pan = new Screen();
    ...............................
    pan.setBackgroungIcon(new ImageIcon("images/h.gif"));
    ............................

    "images" est un package que j'ai défini moi dans le package contenant les classes.

    Cependant mon problème aucun problème ne m'est signalé mais l'image n'apparait dans le JPanel pan que j'ai défini. Je vous signale l'image à le même taille le pan(en pixels bien entendu).

    Qui peut m'expliquer ce qui se passe svp?

    Merci d'avance pour vos réponses.

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 159
    Points : 467
    Points
    467
    Par défaut
    Essaye de réécrire la méthode paint component et là tu dessines ton image.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class MonJPanel extends JPanel{
     
        Image image;
     
        @Override
        public void paintComponent(Graphics g) {
            g.drawImage(image, 0, 0, null);
        }
     
    }
    Vas aussi voir la FAQ: http://java.developpez.com/faq/gui/?...general_images

  3. #3
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut
    Salut,

    Sinon t'as JXImagePanel de swingx plus d'infos : http://www-igm.univ-mlv.fr/~dr/XPOSE...abs/swingX.php

    et pour le code c'est 100 fois plus simple... et ça sert à rien de réinventer la roue............

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    imagePanel = new org.jdesktop.swingx.JXImagePanel();
    		try {
        		Image image = ImageIO.read(
    				getClass().getResource("aerith_logo.png"));
    			imagePanel.setImage(image);
    		} catch (IOException ex) {
    	}

  4. #4
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 72
    Points : 62
    Points
    62
    Par défaut
    Ok je vois ce dont vous me parlez j'essarai de le faire pour voir.
    Cependant je veux seulement vous signaler que j'ai déclaré deux classes:
    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
    public class Screen extends JPanel{
                   private ImageIcon icon = new ImageIcon();
     
                   public void setBackgroundIcon(ImageIcon v){
                       this.icon = v;
                   }
                   public ImageIcon getBackgroundIcon(){
                      return icon;
                   }
               }
               **********************************************
     
               public class MainFrame extends JFrame{
                  private Screen pan = new Screen();
                  private JButton bouton = new JButton("Afficher la photo");
                  private Container c = getContentPane();
     
                  pan.setSize(new Dimension(250, 250));
                  bouton.addActionListener(
                            new ActionListener(){
                            public void actionPerformed(ActionEvent evt){
                              pan.setBackgroundIcon(getClas().getResource(
                                                                "images/h.gif"));
                            }
                  );
     
                c.add(bouton);
                c.add(pan);
               }
    Voilà en gros les deux classes que j'ai implémenté et qui m'ont généré ce problème c'est à dire qu'il n' y a pas d'erreur dans le code mais l'image n'apparait du tout dans pan.

    Alors en vous basant sur cela est ce que vous pouvez mz situer où se trouve exactement le problème qui m'empêche de voir l'image? Merci!

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Points : 675
    Points
    675
    Par défaut
    Il n'y a pas de methode paint ?

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 159
    Points : 467
    Points
    467
    Par défaut
    hum... D'abord tu n'ajoutes ni le boutton ni le JPanel a ton JFrame.
    Ensuite, que je sache un JPanel d'admet pas directement un icone, si tu veux essayes le JLabel qui lui en accepte un. Si tu veux vraiment utiliser un JPanel, tu devras utiliser l'autre solution qu'on te propose: réecrire le painComponent.

  7. #7
    Membre confirmé Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Points : 554
    Points
    554
    Par défaut
    A noter que cette question est dans la FAQ, car elle est en effet posée grand nombre de fois... Donc avec une petite recherche sur google ou sur ce forum, on doit trouver la solution...

  8. #8
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 83
    Points : 96
    Points
    96
    Par défaut
    Sinon tu peux aussi essayer ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Image imageIcon = new ImageIcon("c:\\image.jpg").getImage();   
    Image im = imageIcon.getScaledInstance(jPanel.getWidth(), -1, Image.SCALE_FAST);
    jLabel1.setIcon(new ImageIcon(im));

    A savoir que jlabel est un label qui occupe la hauteur et la largeur de l ecran.
    jPanel.getWidth(), est le jpanel sur lequel se trouve le jlabel.

  9. #9
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 72
    Points : 62
    Points
    62
    Par défaut
    Non je n'est pas posté tout le code mais une seule partie et je voulais mettre en évidence le code qui doit afficher l'image dans le panel. Bien sur que j'ai ajouté les bouton et le panel au container mais seulement rien se s'affiche.

    Je voudrai savoir pourquoi ceci ne marche pas:
    pan.setBackgroundIcon(getClass().getResource("images/h.gif"));

  10. #10
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut
    Citation Envoyé par yannart
    Ensuite, que je sache un JPanel n'admet pas directement un icone...
    C'est pourquoi t'as JXImagePanel de swingx plus d'infos : http://www-igm.univ-mlv.fr/~dr/XPOSE...abs/swingX.php

    Ou sinon
    Citation Envoyé par Claythest
    A noter que cette question est dans la FAQ...

  11. #11
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 72
    Points : 62
    Points
    62
    Par défaut
    Le problème est résolu.Il etait situé au niveau de l'url que j'ai spécifié au lieu de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pan.setBackgrounfIcon(getClass().getResource("photo/images/h.gif"));
    , j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pan.setBackgrounfIcon(getClass().getResource("photo/images/h.gif"));
    ce qui fait que le compilateur ne voyait pas l'image.

    Cependant j'ai aussi crée un JLabel dans la quelle j'ai ajouté l'image avant d'ajouter le JLabel dans mon JPanel pan et c'est plus simpe car je n'ai écrit que ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    label.setIcon(new ImageIcon("photo/images/h.gif"));
    Merci pour tous vos contributions.

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

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. afficher une image dans un JPanel
    Par DiverSIG dans le forum Débuter
    Réponses: 5
    Dernier message: 11/02/2009, 16h07
  3. Debutant,comment afficher une image dans un Jpanel
    Par dilamax_1 dans le forum Graphisme
    Réponses: 1
    Dernier message: 27/04/2008, 16h05
  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