Java

Bonjour,
Je souhaite afficher une image de fond dans mon conteneur mais ce code ne marche pas:

Code classe fenetre:

import java.awt.*;
import javax.swing.*;

public class fenetre {
JFrame fenetre ;
JButton jbPLay;
JButton jbClose;
JLabel label;
public fenetre(String titre) {
fenetre = new JFrame(titre);
Container contenu =
fenetre.getContentPane();
JPanel Button = new JPanel();
jbPLay = new JButton("Jouer");
jbClose = new JButton("Quitter");
contenu.add(Button);
fenetre.setVisible(true);
fenetre.setSize(600,500);
map x = new map();
}
}

code classe map:

import javax.swing.* ;
import java.awt.* ;

public class map extends JPanel{
private Image image = null;
public void paint(Graphics g)
{
super.paintComponent(g);
image = getToolkit().getImage("background.gif");
if(image != null) // Si l'image existe, ...
g.drawImage(image, 200, 20, this); // ... on la dessine
repaint();
}

}

et dans le main :

fenetre f = new fenetre(); // enfin vous vous en doutiez =)

voila voila, merci d'avance!

P.S: Une fenêtre s'affiche mais elle est vide et la méthode pack(); m'affiche une fenetre minuscule, alors que mon image est de grande taille..
Configuration: Windows XP
Firefox 3.0.14

4 réponses

  1. salut,

    tout d'abord commençons par la classe fenêtre:

    import java.awt.*;
    import javax.swing.*;
    
    
    public class fenetre {
        JFrame fenetre ;
        JButton jbPLay;
        JButton jbClose;
        JLabel label;
    
        public fenetre(String titre) {
            fenetre = new JFrame(titre);
            Container contenu = fenetre.getContentPane();
            JPanel Button = new JPanel(); // ceci pour contenir les boutons Jouer et Quitter
            jbPLay = new JButton("Jouer");
            jbClose = new JButton("Quitter");
            // il te manque ici d'ajouter les boutons au panel 
            Boutton.add(jbPlay);
            Boutton.add(jbClose);
            contenu.add(Button,BorderLayout.SOUTH);
            map x = new map();
            // ici tu dois ajouter le l'image contenu dans l'objet map dans ta fenêtre principale.
            contenu.add(x,BorderLayout.CENTER);
            fenetre.setSize(600,500);
            fenetre.setVisible(true);
        }
    } 
    


    passons voir maintenant la classe map :

    import javax.swing.* ;
    import java.awt.* ;
    
    public class map extends JPanel{
         private Image image = null;
         
        public void paint(Graphics g){
             super.paintComponent(g);
             image = Toolkit.getDefaultToolkit().createImage("background.gif");
             if(image != null) // Si l'image existe, ...
                   g.drawImage(image, 200, 20, this); // ... on la dessine
             repaint();
        }
    } 
    
    


    bon, révise tes erreurs pour ne pas commettre la même faute .

    Cordialement.
    0
    1. Merci beaucoup !!!

      Mais la fenetre se charge, les boutons s'affichent en bas mais l'image ne s'affiche pas.. peut etre un probleme de dimension, je verrais ca ...
      0
      1. Arf, quoi que je fasse, l'image ne s'affiche pas -__-'

        Ou est le problème ?
        0
        1. Bonsoir,

          moi je propose d'utiliser des labels (JLabel) au lieu des panneaux (JPanel).
          c'est plus facile la manipulation.

          voici ton code en utilisant une label:

          import java.awt.*;
          import javax.swing.*;
          
          
          public class fenetre {
              JFrame fenetre ;
              JButton jbPlay;
              JButton jbClose;
              JLabel label;
          
              public fenetre(String titre) {
                  fenetre = new JFrame(titre);
                  Container contenu = fenetre.getContentPane();
                  JPanel Button = new JPanel(); // ceci pour contenir les boutons Jouer et Quitter
                  jbPlay = new JButton("Jouer");
                  jbClose = new JButton("Quitter");
                  // il te manque ici d'ajouter les boutons au panel 
                  Button.add(jbPlay);
                  Button.add(jbClose);
                  contenu.add(Button,BorderLayout.SOUTH);
                  //map x = new map();
          	JLabel label = new JLabel();
          	Image image = Toolkit.getDefaultToolkit().createImage("lock.jpg");
          	label.setIcon(new ImageIcon(image));
                  // ici tu dois ajouter le l'image contenu dans l'objet map dans ta fenêtre principale.
                  contenu.add(label,BorderLayout.CENTER);
                  fenetre.setSize(600,500);
                  fenetre.setVisible(true);
          		fenetre.pack();
          		fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              }
          	public static void main(String args[]){
          		fenetre frame = new fenetre("Show Image");
          	}
          } 
          
          


          et c'est à toi de choisir à la fin :)

          Cordialement.
          0