Bonjour,
J'ai écrit un démineur pour un projet universitaire. Cependant, j'ai un problem avec un de mes JPannel qui se vois "effacé" lors de l'apparition d'une autre fenetre sur mon démineur. Exemple :
Fenetre normale
Fenetre buggé
Voici le code de la classe réalisant l'affichage :
Code :
- package pobj.game.demineur.view;
- import java.awt.BorderLayout;
- import java.awt.Dimension;
- import java.awt.FlowLayout;
- import java.awt.Graphics;
- import javax.swing.Box;
- import javax.swing.ImageIcon;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- import javax.swing.JPanel;
- /**
- * La fenêtre globale du Démineur
- * @author caroline chopinaud
- */
- public class DemineurMainWindow extends JFrame {
- private DemineurView view;
- private JPanel gamePanel;
- public DemineurMainWindow (DemineurView view){
- super("Démineur" );
- this.view = view;
- makeGUI();
- this.pack();
- this.setVisible(true);
- }
- private void makeGUI(){
- gamePanel = new JPanel();
- JPanel up = new JPanel();
- JLabel minesRestantes = new JLabel("10" );
- JLabel tempsEcoule = new JLabel("25" );
- JButton newButton = new JButton();
- newButton.setIcon(new ImageIcon(DemineurView.class.getResource("/pobj/game/demineur/data/Cool.png" )));
- newButton.setPreferredSize(new Dimension(30,30));
- newButton.setActionCommand("NEW" );
- gamePanel.setLayout(new BorderLayout());
- gamePanel.add(view, BorderLayout.CENTER);
- gamePanel.add(up, BorderLayout.NORTH);
- // Box hbox = Box.createHorizontalBox();
- // hbox.add(minesRestantes);
- // hbox.add(Box.createHorizontalStrut(20));
- // hbox.add(newButton);
- // hbox.add(Box.createHorizontalStrut(20));
- // hbox.add(tempsEcoule);
- // up.add(hbox);
- up.setLayout(new FlowLayout());
- up.add(newButton);
- // TODO: créer les menus
- this.setContentPane(gamePanel);
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- }
- // TODO: créer un MenuController pour gérer les menus
- } // DemineurMainWindow
|
Comme vous pouvez constater, j'ai mis en commentaire la méthode avec les Box, pour m'assurer que le problème ne venait pas de là. Mais ça fait pareil avec le JPAnnel tout simple et un seul boutton.
Je pensais que les objets de type JPannel faisaient appel automatiquement à la méthode repaint() lorsqu'un événement système se produisait. D'ailleurs, mon panel CENTER qui contient la grille fonctionne parfaitement si je passe une autre fenetre dessus, il ne s'efface pas. Voici le code de celui-ci au cas ou :
J'espère avoir été assez clair
Message édité par _kal_ le 16-11-2006 à 09:36:16