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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Par défaut Afficher une image dans un JPanel
    Bonsoir,
    Voici mon problème,
    j'essaye de créer un damier sur lequel j'essaye d'accrocher des image et impossible d'y arriver.
    Voici le code de mes classes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class TestFenetre {
    public static void main(String[] args) {
    	Fenetre f = new Fenetre("Mon super damier");
    	f.sizeAndPlace();
    	}
    }
    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
     
    package TD6;
     
    import javax.swing.*;
    import java.awt.*;
     
    public class Fenetre extends JFrame {
     
    	private String titre;
     
    	private Damier d0;
     
    	public Fenetre (String titre) {
    		super(titre);
    		this.setSize(300,300);
    		this.setResizable(false);
    		setLayout(new BorderLayout());
    		// Création du damier
    		d0 = new Damier(10,10);
    		this.add(d0,BorderLayout.CENTER);
    		// Permet d'arrêter l'appli lors de la fermeture de la fenêtre
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}
     
    	public void sizeAndPlace() {
    		Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
    		// Récupération de la largeur et hauteur de l'écran 
    		int lae = (int)dim.getWidth();
    		int hae = (int)dim.getHeight();
    		// Retaillage de la largeur et de la hauteur de la fenêtre 
    		int laf = (int)(lae*3/4);
    		int haf = (int)(hae*3/4);
    		// Variable d'émargement de la fenêtre
    		int Xf = (int)(lae*10/100);
    		int Yf = (int)(hae*10/100);
    		// Affichage de la fenêtre avec les nouvelles dimension
    		setBounds(Xf, Yf, laf, haf);
    		this.setVisible(true);
    	}
    }
    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
     
    package TD6;
     
    import java.awt.*;
     
    import javax.swing.*;
     
    public class Damier extends JPanel{
     
    	Case [][] t;
     
    	public Damier (int nbrcaselar, int nbrcasehau) {
    		// Création du style de damier
    		setLayout(new GridLayout(nbrcaselar, nbrcasehau));
    		// Réservation de l'espace en mémoire
    		t = new Case[nbrcaselar][nbrcasehau];
    		for (int i=0 ; i<nbrcaselar ; i++) {
    			for (int j=0 ; j<nbrcasehau ; j++) {
    				t[i][j] = new Mur(i,j);
    				// Permet l'affichage dans la fenêtre
    				this.add(t[i][j]);
    			}
    		}
    	}
    }
    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
     
    package TD6;
     
    import javax.swing.*;
    import java.awt.*;
     
    public abstract class Case extends JPanel {
     
     
    	protected static Toolkit toolkit = Toolkit.getDefaultToolkit() ;
     
    	public Case () {
    	}
     
    	public abstract void paintComponent(Graphics g);
     
    }
    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
     
    package TD6;
     
    import java.awt.*;
     
    public class Mur extends Case {
     
    	Image mur = toolkit.getImage("mur.gif");
     
    	public Mur(int x, int y)
    	{
    	  super();
    	}
     
    	public void paintComponent(Graphics g) {
    		int l,h;
    		l = mur.getWidth();
    		h = mur.getHeight();
    		System.out.println(mur+" "+l+" "+h);
    		g.drawImage(mur, 0, 0, l, h, this);
    	}
    }
    J'ai joint le code également en pièce jointe

    Merci
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Par défaut
    au vu du titre, je te renvoie à ce post :
    http://www.developpez.net/forums/sho...d.php?t=302866

  3. #3
    Membre expérimenté Avatar de g0up1l
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 341
    Par défaut
    euh, j'ai pas lu tout ton code mais je sais ( au vu de ma faible expérience ),
    que pour afficher une image, qques lignes suffisent, il faut passer par un JLabel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    ImageIcon im = new ImageIcon( "chemin du fichier image");
    JLabel imageLabel = new JLabel() ;
    imageLabel.setIcon( im );
    hope it helps !

  4. #4
    Membre émérite Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Par défaut
    Pas d'accord, on peut passer par un JLabel, mais c'est inutile, il faut logiquement utiliser g.drawImage

  5. #5
    Membre expérimenté Avatar de g0up1l
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 341
    Par défaut
    Citation Envoyé par remika
    Pas d'accord, on peut passer par un JLabel, mais c'est inutile, il faut logiquement utiliser g.drawImage
    Ben, si le gars veut afficher 64 images différentes sur son échiquier,
    une grille de 64 JLabel c'est qd même plus pratique !

  6. #6
    Membre émérite Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Par défaut
    Toujours pas d'accord, il suffit de regarder le code du lien que j'ai mis...
    Non seulement ce n'est pas vraiment plus pratique, mais en plus tu gérerais 64 objets "dédiés au graphisme" au lieu d'un seul, ce qui n'est pas génial

  7. #7
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Par défaut RiatJava
    voici mon projet
    Fichiers attachés Fichiers attachés

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 @omzo dans le forum AWT/Swing
    Réponses: 10
    Dernier message: 19/05/2007, 00h19
  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