Java

Fermé
hug0ox Messages postés 6 Date d'inscription lundi 5 octobre 2009 Statut Membre Dernière intervention 7 octobre 2009 - 5 oct. 2009 à 19:51
nabil07 Messages postés 140 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 10 avril 2014 - 7 oct. 2009 à 00:08
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 140 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 10 avril 2014 63
5 oct. 2009 à 22:22
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 6 Date d'inscription lundi 5 octobre 2009 Statut Membre Dernière intervention 7 octobre 2009
6 oct. 2009 à 07:08
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 6 Date d'inscription lundi 5 octobre 2009 Statut Membre Dernière intervention 7 octobre 2009
6 oct. 2009 à 18:56
Arf, quoi que je fasse, l'image ne s'affiche pas -__-'


Ou est le problème ?
0
nabil07 Messages postés 140 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 10 avril 2014 63
7 oct. 2009 à 00:08
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