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 :

[JPanel]Mettre une image dans un JPanel


Sujet :

Composants Java

  1. #1
    Membre du Club Avatar de ehmppowa
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Points : 65
    Points
    65
    Par défaut [JPanel]Mettre une image dans un JPanel
    bonjour,

    Ma question est très con je pense, mais j'y arrive pas. Je voulais savoir comme faut faire pour mettre une image au centre d'un JPanel?

    Merci

  2. #2
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 253
    Points
    1 253
    Par défaut
    Faq -> recherche avancée -> google -> Javadoc...
    Il y a tellement de possibilités de trouver...

    Sinon, dans cette démo tu as un code assez similaire qui devrait t'aider à appréhender le problème.
    JScrollPane sur une image
    Si , et la ont échoué mais pas nous, pensez à dire et cliquez sur . Merci !

    Ici, c'est un forum, pas une foire. Il y a de respectables règles... à respecter !

  3. #3
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    Citation Envoyé par leminipouce
    Faq -> recherche avancée -> google -> Javadoc...
    C'est du caml ca ? une fonction qui prend en parametre un Faq, une recherche avancée, un google et qui renvoie la javadoc ? ca colle :p
    Développeur Java / Flex à Shanghai, Chine
    mes publications
    Mon dernier tutoriel : Messages Quit IRC : explications

    La rubrique IRC recrute des redacteurs : contactez moi

    Ce flim n'est pas un flim sur le cyclimse. Merci de votre compréhension.[/SIZE]

  4. #4
    Membre du Club Avatar de ehmppowa
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Points : 65
    Points
    65
    Par défaut
    j'ai trouver avec la methode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void paint(Graphics g){
    		g.drawImage(ledEteind,11,1,null);
    	}
    mais il y a un moyen de faire sans la methode paint ?

  5. #5
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Bonjour,

    Je ne sais pas non plus comment faire pour mettre une image dans un JPanel et je ne comprends pas comment utiliser cette fonction n'ayant jamais vu les notions de Graphics...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public void paint(Graphics g){ 
          g.drawImage(ledEteind,11,1,null); 
       }
    J'ai compris que ca dessinait une image sur un Graphics mais comme je fais pour que ca la dessine sur un JPanel ???

    Merci beaucoup

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Houla c'est pas gagne...

    La classe Panel contient la methode public void paint(Graphics graphics) et la classe JPanel dispose de la methode protected void paintComponent(Graphics graphics). Ces methodes sont appellees lorsque l'arbre/la hierarchie des composants est affiche a l'ecran et que c'est le moment de dessiner le Panel ou le JPanel (celon lequel on utilise). En quelque sorte l'objet Graphics fournis en parametre represente la plupart du temps la surface de l'ecran (ou la memoire video si acceleration materielle).

    En sous-classant l'un de ces classe et en surchargeant la bonne methodes et en dessinant l'image dans le Graphics fournis on affiche l'image a l'ecran (si le composant est affiche a l'ecran).

    Voici un exemple de classe pret a l'emploi capable d'afficher une image.

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    package test; 
     
    import java.awt.*; 
    import java.beans.*; 
    import javax.swing.*; 
     
    /** 
     * <p>Title: </p> 
     * <p>Description: </p> 
     * <p>Copyright: Copyright (c) 2005</p> 
     * <p>Company: </p> 
     * @author not attributable 
     * @version 1.0 
     */ 
    public final class ImagePanel extends JPanel { 
      public static final String IMAGE_PROPERTY = "ImagePanel.image"; 
      private InnerListener innerListener = new InnerListener(); 
     
      public ImagePanel(Image image) { 
        super(); 
        addPropertyChangeListener(IMAGE_PROPERTY, innerListener); 
        setImage(image); 
      } 
     
      public void dispose() { 
        removePropertyChangeListener(IMAGE_PROPERTY, innerListener); 
        innerListener = null; 
        setImage(null); 
      } 
     
      public void setImage(Image image) { 
        putClientProperty(IMAGE_PROPERTY, image); 
      } 
     
      public Image getImage() { 
        return (Image) getClientProperty(IMAGE_PROPERTY); 
      } 
     
      /** {@inheritDoc} 
       */ 
      @Override protected void paintComponent(Graphics graphics) { 
        super.paintComponent(graphics); 
        Image image = getImage(); 
        if (image != null) { 
          graphics.drawImage(image, 0, 0, null); 
        } 
      } 
     
      /** 
       * <p>Title: </p> 
       * <p>Description: </p> 
       * <p>Copyright: Copyright (c) 2005</p> 
       * <p>Company: </p> 
       * @author not attributable 
       * @version 1.0 
       */ 
      private class InnerListener implements PropertyChangeListener { 
        /** {@inheritDoc} 
         */ 
        public void propertyChange(PropertyChangeEvent event) { 
          String property = event.getPropertyName(); 
          if (property.equals(IMAGE_PROPERTY)) { 
            Image image = getImage(); 
            int width = 0; 
            int height = 0; 
            if (image != null) { 
              width = image.getWidth(null); 
              height = image.getHeight(null); 
            } 
            Dimension size = new Dimension(width, height); 
            setPreferredSize(size); 
            setMinimumSize(size); 
            repaint(); 
          } 
        } 
      } 
    }
    Note : ici l'image s'affiche dans le coin superieur gauche (normalement le panel a la taille de l'image, mais certains layout peuvent malencontreusement l'aggrandir). Les changements a apporter sont minimaux pour afficher l'image au centre du panel ou pour tenir compte de la bordure optionnelle du panel.

    Woala.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  7. #7
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Le plus simple est encore de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Image image = ImageIO.read(new File("chemin/vers/image"));
    JLabel viewer = new JLabel(new ImageIcon(image));
     
    JPanel panel = new JPanel(new BorderLayout());
    panel.add(viewer);
    Romain Guy
    Android - Mon livre - Mon blog

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    Salut,

    Gfx, j'ai essayé ton code, mais on dirait que le constructeur de JPanel qui prend un ImageIcon n'existe pas...

  9. #9
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Heu c'est le JLabel qui prend ImageIcon en parametre.
    Romain Guy
    Android - Mon livre - Mon blog

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    Autant pour moi !

  11. #11
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Merci bouye et gfx

    je vais essayer de m'en sortir avec ca

  12. #12
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    C'est bon j'ai réussi à me faire des JPanels avec des images dedans

    J'avais juste de la peine avec la notion de graphics, je pensais qu'il fallait appeler la methode paint component avec en paramètre ce sur quoi on voulait dessiner mais maintenant j'ai compris

    encore merci bouye

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/05/2010, 12h45
  2. Afficher une image dans un JPanel
    Par @omzo dans le forum AWT/Swing
    Réponses: 10
    Dernier message: 19/05/2007, 00h19
  3. Afficher une image dans un JPanel
    Par yaya0057 dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 04/04/2007, 00h10
  4. comment afficher une image dans un jpanel ?
    Par 180degrés dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 18/04/2006, 15h33
  5. Persistance d'une image dans un JPanel
    Par Robiwan59 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 15/02/2006, 19h20

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