Pages

JPanel qui ne se repaint() pas sujet

mercredi 29 janvier 2014




Bonsoir à tous. Je suis dans une sacré incompréhension, je vous l'avoue.

Déjà, ça fait 2 jours que je fais des recherches en tous genres. Et aucune n'a été concluante. Donc je me tourne vers vous.

Voyez-vous, j'ai une fenêtre très jolie comme celle ci :


Quand on clique sur Fichier, voici ce qu'il s'affiche :


Et normalement, quand on clique sur Nouveau, on appelle une méthode censée instancier une variable. Voici comment fonctionne le PanelAccueil.java : Si la variable n'est pas instanciée, on affiche le message de bienvenue. Si la variable est instanciée, on affiche "Y'a un projet en cours" à la place. Cependant, le JPanel ne semble jamais vouloir se repaint(), s'updateUI()... J'ai tout essayé de ce côté là. Je vous file le source nécéssaire au diagnostic :


Code:


package editeurvn;

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

import jeu.*;

public class EditeurDestinies extends JFrame {
   
    public static VN jeu;
    private PanelAccueil pA;
   
    public EditeurDestinies() {
                setTitle("Editeur Destinies");
                setLocation(50, 50);
                setSize(700, 500);

                setJMenuBar(new BarreMenu(this));

                this.pA = new PanelAccueil();
                add(this.pA);
                pack();

                setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
                setVisible(true);
    }
   
    public void newProject() {
                EditeurDestinies.jeu = new VN();
                this.pA.repaint();
                pack();
    }

    public static void main(String[] args) { 
                EditeurDestinies ed = new EditeurDestinies();
       
    }
   
}




Code:


package editeurvn;

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

public class BarreMenu extends JMenuBar implements ActionListener {
    private JMenuItem nouveau;
    private JMenuItem charger;
    private JMenuItem quitter;
   
    private JMenuItem edEvenements;
    private JMenuItem edMonstres;
    private JMenuItem edObjets;
   
    private EditeurDestinies edD;
   
    public BarreMenu(EditeurDestinies edD) {
                this.edD = edD;

                JMenu menuFichier = new JMenu("Fichier");
                JMenu menuEditeurs = new JMenu("Editeurs");

                this.nouveau = new JMenuItem("Nouveau");
                this.charger = new JMenuItem("Charger");
                this.quitter = new JMenuItem("Quitter");

                this.edEvenements = new JMenuItem("Editeur Evenements");
                this.edMonstres = new JMenuItem("Editeur Monstres");
                this.edObjets = new JMenuItem("Editeur Objets");

                menuFichier.add(this.nouveau);
                menuFichier.add(this.charger);
                menuFichier.addSeparator();
                menuFichier.add(this.quitter);

                menuEditeurs.add(this.edEvenements);
                menuEditeurs.add(this.edMonstres);
                menuEditeurs.add(this.edObjets);

                this.nouveau.addActionListener(this);
                this.charger.addActionListener(this);
                this.quitter.addActionListener(this);

                this.edEvenements.addActionListener(this);
                this.edMonstres.addActionListener(this);
                this.edObjets.addActionListener(this);


                this.add(menuFichier);
                this.add(menuEditeurs);

    }
   
    public void actionPerformed(ActionEvent e) {
                System.out.println(((JMenuItem)e.getSource()).getText());
                if(e.getSource() == this.quitter)
                        System.exit(0);
                if(e.getSource() == this.nouveau)
                        this.edD.newProject();
    }
}



Code:


package editeurvn;

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

import jeu.*;

public class PanelAccueil extends JPanel {
    private JLabel affichage;
   
    public PanelAccueil() {
                if(EditeurDestinies.jeu == null)
                        this.affichage = new JLabel("<html><center><font size=6 color=\"red\" >Bienvenue dans l'éditeur de Visual Novels !</font><br /><br />"
                                + "Pour accéder aux contenus de ce logiciel, utilisez le menu du haut.<br/></center></html>");
                else
                        this.affichage = new JLabel("Y'a un projet de créé");

                add(this.affichage);
       
    }
   
}



Bien sûr, le tout se compile parfaitement, et aucune erreur n'apparaît. Je sèche vraiment, et je cherche vraiment à connaître la cause de cette erreur qui m'est déjà arrivée dans le passé.

Merci beaucoup d'avance, je m'en remets à vous.




Aucun commentaire:

Enregistrer un commentaire