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 :

Image dans un Jpanel


Sujet :

AWT/Swing Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 43
    Points : 26
    Points
    26
    Par défaut Image dans un Jpanel
    Bonjour à tous

    J'aimerais insérer un e image au format jpg dans n Jpanel.
    Quelle méthode utliser?
    Voila mon code pour mon Jpanel image.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    private JPanel getImage() {
      if (image == null) {
       image = new JPanel();
      }
      return image;
     }
    merci d'avance

  2. #2
    Membre averti Avatar de dazz_x
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 269
    Points : 328
    Points
    328
    Par défaut re:
    J'aimerais insérer un e image au format jpg dans n Jpanel.
    Quelle méthode utliser?
    Tu peux surcharger la méthode PaintComponent de JPanel :
    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
     
    import java.awt.image.BufferedImage;
    import javax.imageio.ImageIO;
    import java.io.File;
     
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            String aFileName="";//mettre ici le chemin de l'image
            try {
                BufferedImage image=null;
                image= ImageIO.read(new File(aFileName));    
                }
                int posX=0;//mettre la valeur de position en x voulue
                int posY=0;//mettre la valeur de position en y voulue
                // drawImage peut être utilisée en spécifiant des dimensions        d'image (voir JavaDoc)
                g.drawImage(image, posX, posY, null);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    paintComponent est appellée avant chaque repaint ou paint...
    et Voilà, ça devrait marcher !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Une autre méthode consiste à utiliser les composants swing qui sont prévus pour integrer facilement des images ou images cliquables (JLabel et JButton).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    String url = "url/de/ton/image.png";
     
    JPanel p = new JPanel();
    p.add(new JLabel(url));
    Ca devrait fonctionner aussi

  4. #4
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    J'ai donc utilisé la méthode au dessus que j'ai écrite dans une classe que j'ai nommé panel_image est qui "extends JPanel".
    Dans la classe de ma JFrame je fais donc appel à cette méthode pour obtenir une image dans mon JPanel que j'appelle image
    voila le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private JPanel getImage() {
      if (image == null) {
       image = new JPanel();
       image.setPreferredSize(new java.awt.Dimension(100,100));
       Graphics g=new Graphics();?????????
       image.paintComponents(g);
      }
      return image;
     }
    le probleme est qu eclipse me dit que je n'ai pas le droit d'instancier l'objet graphics car Graphics n'est pas une classe concrète

    merci

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    Pour obtenir ton objet Graphics, utilise cette methode:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Graphics gr = this.getGraphics();
    Grâce à ca tu reccuperera le composant Graphics

    Mais je pense que l'utilisation d'un JLabel qui utilise une image que tu placerais dans ton JPanel serait plus appropriée. Tout depend en fait de ce que tu veux faire au final ?

    Bon courage quand même

  6. #6
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    si je comprends bien ce que tu dis je peut mettre une image dans un JLabel?
    Quelle méthode faut il utiliser?
    merci

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    Je te montre un exemple concret (je ne le test pas j'ai pas java au bureau, mais ca devrai fonctionner)

    Disons que tu as une JFrame, qui contient un JPanel:

    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
     
    public class MaFrame extends JFrame {<div style="margin-left:40px">String url = "repertoire/images/monImage.png";
    JPanel p;
    JLabel lab;</div><div style="margin-left:40px">public MaFrame {<div style="margin-left:40px">super("C'est super !"); // Tu appeles le constructeur de la classe JFrame
     
    setSize(200, 200); // La taille
    setVisible(true); // Tu l'affiche
     
    Container c = this.getContentPane(); // Ton Container (pas le choix)
    c.setLayout(new FlowLayout()); // Ton gestionnaire de placement
     
    p = new JPanel(); // Tu créé donc ton JPanel
     
    lab = new JLabel(new ImageIcon(url)); // Tu créé ton JLabel en passant en paramêtre un objet ImageIcon que tu créé grâce à l'url de ton image
    p.add(lab); // Tu ajoute ton JLabel à ton JPanel
     
     c.add(p); // Enfin tu ajoute ton JPanel à ton Container</div>}
     
    public static void main(String[] argv) {<div style="margin-left:40px">new MaFrame();</div>}</div>}
    Les composants swing sont la pour te faciliter la tache d'affichage des images ! Profitons en

  8. #8
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    impeccable merci beaucoup

Discussions similaires

  1. [Débutant] Image dans un JPanel
    Par TheBAT dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 24/11/2006, 22h55
  2. comment afficher une image dans un jpanel ?
    Par 180degrés dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 18/04/2006, 15h33
  3. Persistance d'une image dans un JPanel
    Par Robiwan59 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 15/02/2006, 19h20
  4. Rafraichir image dans un jPanel
    Par kentao dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 02/01/2006, 16h31
  5. [JPanel]Mettre une image dans un JPanel
    Par ehmppowa dans le forum Composants
    Réponses: 11
    Dernier message: 30/11/2005, 20h17

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