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 avec swing


Sujet :

AWT/Swing Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Afficher une image avec swing
    Bonjour,
    je suis débutant et je souhaite afficher une image dans une application avec swing. Voici mon code, il ne me sort pas d'erreurs mais il ne m'affiche pas l'image. Je développe avec JBuilder Foundation. Merci d'avance de votre aide précieuse.


    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
     
    package monPackage;
    import javax.swing.*;
    import java.awt.*;
     
    class Affiche extends JPanel{
      Image toto;
      public Affiche(){
          toto= getToolkit().getImage("tt.gif");
          setPreferredSize(new Dimension(300, 200));
      }
     
      public void paintComponent(Graphics g)
      {
        super.paintComponent(g);
        g.drawImage(toto, 0, 0, this);
      }
    }
     
    class MonImage extends JFrame{
      public MonImage(){
        setContentPane(new Affiche());
      }
    }
     
    class monFichier{
      public static void main(String[] arg)
      {
        MonImage monCadre = new MonImage();
        monCadre.pack();
        monCadre.setVisible(true);
      }
    }



    [Modéré par Didier]
    Ajout de tag dans le titre
    Lire les règles du forum : Règles du forum Java

  2. #2
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 50
    Points : 58
    Points
    58
    Par défaut
    Salut

    tu devrais vérifier que ton image toto n'est pas nulle ... Pour le chargement des images, il est préférable de le monitorer avec un MediaTracker

    dis le si c'est mieux

    Seb

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 64
    Points : 46
    Points
    46
    Par défaut
    Essaye de regarder ce sujet, ç va peut être t'aider :
    http://www.developpez.net/forums/viewtopic.php?t=229502

    bon courage

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci à vous de vous attarder sur mon cas pitoyable, j'ai testé si l'image n'est pas nulle et j'ai ajouté un mediaTracker > cela ne marche tjs pas et JBuilder me sort l'erreur ci dessous. Merci d'avance de vos réponses...

    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
     
     
    import javax.swing.*;
    import java.awt.*;
     
    class Affiche extends JPanel{
      Image toto;
      MediaTracker trk;
      public Affiche(){
        setPreferredSize(new Dimension(300, 200));
        MediaTracker trk = new MediaTracker(this);
         toto= getToolkit().getImage("tt.gif");
         trk.addImage(toto, 0);
         try {
           trk.waitForAll();
         }
         catch (InterruptedException e) {
           // Traitement de l'erreur
         }
     
      }
      public void paintComponent(Graphics g)
      {
        super.paintComponents(g);
        if (trk.statusAll(false) != MediaTracker.COMPLETE)
         {
           g.drawString("probleme de chargement d'image", 50, 100);
           return;
        }else{
          if(toto!=null){
            g.drawImage(toto, 0, 0, this);
          }else{
            System.out.println("image == nulle");
          }
        }
       }
      }
     
    class MonImage extends JFrame{
       public MonImage(){
        setContentPane(new Affiche());
      }
    }
     
    class monFichier{
      public static void main(String[] arg)
      {
        MonImage monCadre = new MonImage();
        monCadre.pack();
        monCadre.setVisible(true);
      }
    }
    java.lang.NullPointerException
    at sans_titre4.Affiche.paintComponent(Sans_titre1.java:24)
    at javax.swing.JComponent.paint(JComponent.java:808)
    at javax.swing.JComponent.paintChildren(JComponent.java:647)
    at javax.swing.JComponent.paint(JComponent.java:817)
    at javax.swing.JLayeredPane.paint(JLayeredPane.java:557)
    at javax.swing.JComponent.paintChildren(JComponent.java:647)
    at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4802)
    at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4748)
    at javax.swing.JComponent.paint(JComponent.java:798)
    at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:21)
    at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60)
    at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97)
    at java.awt.Container.paint(Container.java:1312)
    at sun.awt.RepaintArea.paint(RepaintArea.java:177)
    at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:260)
    at java.awt.Component.dispatchEventImpl(Component.java:3678)
    at java.awt.Container.dispatchEventImpl(Container.java:1627)
    at java.awt.Window.dispatchEventImpl(Window.java:1606)
    at java.awt.Component.dispatchEvent(Component.java:3477)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)

  5. #5
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 50
    Points : 58
    Points
    58
    Par défaut
    oui bon c'est un peu normal dans la mesure où dans ton constructeur tu écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MediaTracker trk = new MediaTracker(this);
    donc trk est une variable qui n'est visible que dans le constructeur ...
    remplace cette ligne par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.trk = new MediaTracker(this);
    et cela devrait être mieux, non ?

    Seb

  6. #6
    Membre éprouvé
    Avatar de c-top
    Profil pro
    Turu
    Inscrit en
    Septembre 2003
    Messages
    972
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Turu

    Informations forums :
    Inscription : Septembre 2003
    Messages : 972
    Points : 1 246
    Points
    1 246
    Par défaut
    Bon un peu d'aide, voila un code qui devrait marcher.
    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
     
     
    import java.awt.*;
    import java.awt.image.*;
    import java.awt.event.*;
    import java.io.*;
     
    public class SimpleViewer extends Frame {
       protected Image awtImage;
     
       public void loadAndDisplay(String filename){
          Image img = readImage(filename);
          awtImage = img;
          int width = img.getWidth(this);
          int height = img.getHeight(this);
          displayImage(img, width, height);
       }
     
       public void displayImage(Image img, int width, int height) {
          addWindowListener(
             new WindowAdapter() {
                public void windowClosing(WindowEvent e){
                   System.exit(0);
                }
             } );
          setTitle("Simple Viewer ");
          pack();
          setSize(new Dimension(width, height));
          show();
          repaint();
       }
     
       public Image readImage(String imageName){
          Image image = Toolkit.getDefaultToolkit().getImage(imageName);
          MediaTracker imageTracker = new MediaTracker(this);
          imageTracker.addImage(image, 0);
          try{
            imageTracker.waitForID(0);
          }catch(InterruptedException e){ return null;}
          return image;
       }
     
     
       public void paint(Graphics g){
          Rectangle rect = this.getBounds();
          if(awtImage != null) {
              g.drawImage(awtImage, 0,0,rect.width, rect.height, this);
          }
       }
     
       public static void  main(String[] args){
          SimpleViewer ip = new SimpleViewer();
          if(args.length <1) {
             System.out.println("Enter a valid image file name");
             System.exit(0);
          }
          ip.loadAndDisplay(args[0]);
       }
    }
    Pour l'utiliser il te faut indiquer sur le Ligne de commande l'image que tu veux charger en argument.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    C'est mieux certes, il ne me renvoi plus l'erreur du message précédent, malgrè tout, le programme me renvoi "problème de chargement d'image". Cette erreur est situéedans le code suivant :
    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
     
      public void paintComponent(Graphics g)
      {
         if (trk.statusAll(false) != MediaTracker.COMPLETE){
           g.drawString("probleme de chargement d'image", 50, 100);
           return;
        }else{
          if(monde!=null){
            g.drawImage(monde, 0, 0, this);
             super.paintComponents(g);
          }else{
            System.out.println("image == nulle");
          }
        }
       }
      }
    Pouvez-vous me dire ce qui provoque cette erreur?
    ps : merci pour ta réponse seb m.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Oups, je réponds à seb m., excuses moi c-top, je regarde ton code...

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Désolé c-top, mais ton code est trop compliqué pour moi, je suis débutant en java, je comprends à peu près le cheminement mais je n'arrive pas à compiler ton code avec mon image (vu que je travailles sous JBuilder,j'ai essayé d'adapter ton code afin de le faire fonctionner, mais je n'y suis pas arrivé...) Si qqun pouvait me venir en aide, ça fait trois semaines que je suis là dessue, je commence à saturer.... merci pour le mendiant que je suis

  10. #10
    Membre éprouvé
    Avatar de c-top
    Profil pro
    Turu
    Inscrit en
    Septembre 2003
    Messages
    972
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Turu

    Informations forums :
    Inscription : Septembre 2003
    Messages : 972
    Points : 1 246
    Points
    1 246
    Par défaut
    Désolé mais j'ai essayé d'être le plus simple possible tout en étant rigoureux pour débuter dans le traitement d'une image.
    Pour la compilation en tant que débutant tu devrais quitter JBuilder et passer en ligne de commande c'est la meilleur école
    D'ailleurs Même avec JBuilder je ne comprends pas pourquoi tu n'arrives pas à le compiler :

  11. #11
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut Re: [Swing]Afficher une image avec swing
    Citation Envoyé par arnonote
    Bonjour, je suis débutant
    Dans ce cas peut etre es tu passe a cote du simplissime :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Affiche extends JPanel {
        JLabel lab;
        ImageIcon image;
     
        public Affiche() {
            super();
            image = new ImageIcon("tt.gif");
            lab = new JLabel(image);
            this.add(lab);
            // note qu'on peut mettre ca en une seule ligne !!!
        }
    }
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci à tous pour votre aide ,
    J'ai résolu mob pb, tous les codes fonctionnaient, seulement ils ne trouvaient pas l'image "tt.jpg" étant donné que je ne donnait pas de chemin (l'image était dans le même dossier que mon .java). J'ai placé mon image sur c: par ex et j'ai donc mis "c:/tt.gif" à la place, et ça a marché !!

    Encore un grand merci à vous tous pour votre contribution éclairée.

    Arnonote

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

Discussions similaires

  1. bleme pour afficher une image avec swing
    Par uzumaki_naruto dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 22/02/2007, 00h47
  2. Afficher une image avec PHP
    Par a_zouggari dans le forum Langage
    Réponses: 2
    Dernier message: 22/04/2006, 18h02
  3. Afficher une image avec opengl
    Par kmaniche dans le forum OpenGL
    Réponses: 4
    Dernier message: 07/02/2006, 09h04
  4. PL/SQL - Comment afficher une image avec HTP ?
    Par patmaba dans le forum PL/SQL
    Réponses: 2
    Dernier message: 08/07/2004, 09h28

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