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

Agents de placement/Fenêtres Java Discussion :

[JFrame] Afficher une image


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 61
    Par défaut [JFrame] Afficher une image
    Bonjour j'aimerais tout simplement afficher une image sur une JFrame.
    J'ai un problème si je met ce code ca ne marche pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import java.awt.*;
    import javax.swing.*;
     
    public class Sprite{
        public static void main(String args[]){
    	JFrame f = new JFrame();
    	f.setVisible(true);
    	f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	f.setSize(300,200);
    	Image im = f.getToolkit().getImage("Arbre.jpg");
    	f.getGraphics().drawImage(im,50,50,f);
        }
    }
    mais si je rajoute un
    avant de l'afficher ca marche. Pourquoi et que faut-il faire pour que ca marhce ?
    Par apres j'aimerai faire une programme pour faire une sorte de decor que l'on pourrait faire defiler en utilisant des images (des sortes de sprites). Je sais pas si c'est clair mais si vous comprenez est ce que la meilleure methode pour faire ca c'est de charge toutes les images et de les affichées ensuite dans un Frame et chaque fois qu'on bouge le decor, d'effacer la fenetre et de reafficher toutes les images translatées ?

  2. #2
    Invité de passage
    Inscrit en
    Mars 2005
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1
    Par défaut
    Je sais pas trop pourquoi sa marche pas.
    Moi je ferais comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    JFrame f = new JFrame();
    f.setVisible(true);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setSize(300,200);
    f.getContentPane().setLayout(null);
    JLabel label = new JLabel(new ImageIcon("comp28.jpg"));
    label.setBounds(50,50,100,100);
    f.getContentPane().add(label);
    Apres, je comprends pas trop ce que tu veux faire avec ton deplacement de fenetre ....

  3. #3
    Membre confirmé Avatar de al85
    Profil pro
    Inscrit en
    Février 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 158
    Par défaut
    il y a une petite chose qui me chiffonne dans le code, c'est le 4e paramètre de drawImage(), apparemment tu passe ta frame, mais ce n'est pas ca qu'il faut mettre. Il faut mettre un ImageObserver, ou null si on ne passe pas d'ImageObserver.
    tu n'as pas eu d'erreur à la compilation ?
    drawImage est une méthode static boolean, met la dans un if pour voir si c'est ca qui pose probleme.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 37
    Par défaut
    Essaye comme ca :

    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
     
    import java.awt.*;
    import javax.swing.*;
     
    public class Sprite extends JFrame {
        public static void main(String args[]){
          new Sprite();
        }
        public Sprite() {
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(300,200);
        java.net.URL image = this.getClass().getResource("Arbre.jpg");
        Image im = new javax.swing.ImageIcon(image).getImage();
        this.drawImage(im, 50, 50, this);
      }

  5. #5
    Membre confirmé Avatar de al85
    Profil pro
    Inscrit en
    Février 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 158
    Par défaut
    non ca ne compile pas, regarde ce que je viens de dire : en 4e parametre de drawImage on ne passe pas une frame !! c'est ca l'erreur !

    et puis la tu appelle drawImage sur la frame, or drawImage doit etre appelé sur le getContentPane().getGraphics() de la frame

  6. #6
    Membre confirmé Avatar de al85
    Profil pro
    Inscrit en
    Février 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 158
    Par défaut
    bon, voila un code qui marche :
    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
     
    import java.awt.*;
    import javax.swing.*;
     
    public class Sprite extends JFrame {
        public static void main(String args[]){
          new Sprite();
        }
        public Sprite() {
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(300,200);
     
        getContentPane().add(new SpritePanel());
      }
     
      private class SpritePanel extends JPanel{
      	public void paintComponent(Graphics g){
      		super.paintComponent(g);
      		MediaTracker media;
      		Image img = null;
      		try{
    			media = new MediaTracker(this);
    			img = Toolkit.getDefaultToolkit().getImage("Arbre.jpg");
    			media.addImage(img,0);
    	    	media.waitForID(0);
    	    	while(!media.checkAll());
    	    }
    	    catch (InterruptedException e){
    	    }
     
      		g.drawImage(img, 50, 50, null);
      		repaint();
      	}
      }
     }
    je cree une classe qui etend JPanel et c'est sur ce JPanel que je dessine l'image. Puis j'ajoute ce panel au contentPane de la frame.
    j'utilise un MediaTracker juste pour être sur que l'image soit chargée quand on veut l'afficher, mais il doit y a voir plus efficace.

    voila

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 61
    Par défaut
    Ok merci a tous. Ca marche maintenant je vais pouvoir avancer. Merci.

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

Discussions similaires

  1. afficher une image dans un jframe
    Par nesrine18 dans le forum NetBeans
    Réponses: 3
    Dernier message: 19/03/2010, 18h03
  2. Afficher une image dans une JFrame
    Par vince351 dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 25/01/2007, 19h32
  3. [débutant]Afficher une image sur une JFrame
    Par mavina dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 09/08/2006, 17h25
  4. Afficher une image dans une classe héritant de Jframe
    Par condor_01 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 27/04/2006, 23h11
  5. [JFrame]afficher une image dedans
    Par dimitrimm972 dans le forum Agents de placement/Fenêtres
    Réponses: 14
    Dernier message: 06/04/2006, 18h44

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