Java

hug0ox Messages postés 9 Statut Membre -  
nabil07 Messages postés 161 Statut Membre -
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..
A voir également:

4 réponses

nabil07 Messages postés 161 Statut Membre 64
 
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
hug0ox Messages postés 9 Statut Membre
 
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
hug0ox Messages postés 9 Statut Membre
 
Arf, quoi que je fasse, l'image ne s'affiche pas -__-'

Ou est le problème ?
0
nabil07 Messages postés 161 Statut Membre 64
 
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