Bonjour !
Pour mon premier programme Java j'essaie de faire un (tout petit) jeu de combat (si on voit le fond d'ecran et 2 personnages qui bougent je serai deja content
)
Seulement j'ai un probleme pour "superposer" les choses.
Pour mon fond j'ai créé une classe BGFrame derivée de JFrame pour prendre en compte "facilement" les fond d'écran. Ca ca marche
Mais c'est quand je veux ajouter quelque chose (un joueur : un jlabel) par dessus que ça ne fonctionne plus.
BGFrame.java :
Code :
- import java.awt.event.*;
- import javax.swing.*;
- import java.awt.*;
- public class BGFrame extends JFrame
- {
- Image image;
- JScrollPane scrollPane;
- public void setBackground(String src)
- {
- image = new ImageIcon(src).getImage();
- JPanel panel = new JPanel()
- {
- protected void paintComponent(Graphics g)
- {
- Dimension d = getSize(); //capture les dimensions de la fenetre
- g.drawImage(image, 0, 0, d.width, d.height, null); //dessine l'image aux dimensions de la fenetre
- super.paintComponent(g); //peint la fenetre avec ce qu'on a choisi
- }
- };
- panel.setOpaque(false);
- super.getContentPane().add(panel);
- }
- }
|
MainClass.java :
Code :
- import java.awt.event.*;
- import javax.swing.*;
- import java.awt.*;
- public class MainClass
- {
- public static void main(String [] args)
- {
- /* CREATION DE LA FENETRE PRINCIPALE */
- BGFrame frame = new BGFrame();
- frame.setTitle("Kung-Fu Mast3r" );
- frame.setSize(1024,768);
- frame.setBackground("sf2-blanka.gif" );
- frame.setResizable(false);
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.setVisible(true);
-
-
- JLabel label = new JLabel("LIUKANG" );
- label.setBackground(Color.red);
- label.setSize(200,200);
- frame.add(label);
- }
- }
|
Plus tard je ferai une class Player (derivé de JLabel a priori) mais je l'ai déjà fait et ça ne marche pas. J'essaie donc de revenir sur des choses simples.
mais ca ne marche toujours pas.
En fait : je n'arrive pas a superposer un JLabel sur ma BGFrame
Soit on voit mon "background", soit on voit mon "Liu Kang", mais impossible de voir l'un par dessus l'autre.
J'ai aussi essayé avec un frame.setContentPane(panel); mais je dois mal l'utiliser.
Est-ce que quelqu'un pourrait m'aider sur ce probleme de débutant ?
Merci d'avance ![:jap: :jap:](https://forum-images.hardware.fr/icones/smilies/jap.gif)
Message édité par ZePRiNCE le 09-11-2009 à 00:53:19
---------------
A VENDRE: Razer Chroma ARGB Controller / Boitier / Support Triple Screen / Ventirad / Carte USB3