Probléme d'un JPanel

Fermé
amani - Modifié par amani le 27/05/2012 à 15:26
 amani - 27 mai 2012 à 20:26
Bonjour,

J'ai construit une fenêtre "Frame"qui contient des éléments définit dans un JPanel

public class Frame extends JFrame {
public JPanel container = new JPanel();
public Frame(){
// j'ai ajouté touts les composant dans le panel "container"
}
}

j'ai aucun soucis avec cette fenêtre, mais lorsque j'ai voulue l'intégrer dans une autre fenêtre Frame2 une exception se produit !!
public class Frame2 extends JFrame{
public Frame pan; // j'ai importer l'autre fenêtre "Frame"
private JPanel container = new JPanel();

public Frame2(){
container.add(pan); //ligne 16
this.setContentPane(container);
this.setVisible(true);

}

}

voilà l'exception:
Exception in thread "main" java.lang.NullPointerException
at java.awt.Container.addImpl(Unknown Source)
at java.awt.Container.add(Unknown Source)
at tn.sr.testframework.Frame2.<init>(Frame2.java:16)
at tn.sr.testframework.main.main(main.java:10)

1 réponse

KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
27 mai 2012 à 15:39
public Frame pan; // j'ai importer l'autre fenêtre "Frame"
Ici il n'y a rien d'importé du tout !
pan n'est pas initialisée, elle vaut donc null, d'où ton exception lorsque tu fais add(pan)

Une idée, mais il faudrait adapter selon le reste du code :

public Frame2(Frame frame)
{
    pan = frame;
    container.add(pan);
    setContentPane(container);
    setVisible(true);
}
1
La même exception existe, j'ai appelé mon Frame2 dans la classe main comme ça:
Frame2 fenetre = new Frame2(Frame);
mais Frame n'est pas définit comme type j'ai essayé ensuite
Frame2 fenetre = new Frame2(null);
normalement le null n'as aucun effet, mais l'exception reste la meme
0
KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
27 mai 2012 à 16:39
Bien sûr que si tu remets null, ça plante, le paramètre qu'il faut passer c'est ta fenêtre principale.

Exemple :

public static void main(String...args)
{
    Frame frame = new Frame();
    Frame2 frame2 = new Frame2(frame);
}

Et si tu veux créer la deuxième frame à l'intérieur de la première, tu peux faire :

public Frame()
{
    Frame2 frame2 = new Frame2(this);
}
0
le fait de faire :
Frame frame= new Frame()
dans main, il vas afficher le premier frame mais moi je veux juste l'afficher dans le deuxième non pas indépendants.

la deuxième méthode
Frame frame2= new Frame(this) entaine des exception lorsque j'effectu des clikck sur les boutons car les lsitener sont dénits ds des classes apés le constructeur de frame, peut être que ses actions sont invisible par rapport au deuxième frame?!
0
KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
27 mai 2012 à 17:31
Un JFrame ne s'affiche que si on lui indique via la méthode setVisible(boolean), si tu ne veux pas que la fenêtre s'affiche alors tu passes ce paramètre à false pour Frame, de même que tu l'as passé à true pour Frame2 !

Ensuite, je ne suis pas sûr de comprendre ce que tu veux faire avec ces deux fenêtres, est-ce que tu veux afficher l'une dans l'autre ? Dans ce cas tu n'as pas compris à quoi servait une JFrame, et il faudrait plutôt remplacer la JFrame qui doit être inclus dans l'autre, par un JPanel...

Comme d'habitude, plus ton problème sera précis, plus les réponses que je te donnerai seront proche de ce que tu veux, mais pour l'instant c'est trop vague pour corriger tous tes bugs !
0
Oui exactement je veux afficher le frame1 dans le frame2 mon but est des développer bcp des fenêtre en swing puis les appeler toutes dans une seule final pour représenter l'interface graphique de mon application a ce niveau je veux juste afficher frame1 dans frame2 juste dans un seul endroit pour laisser de la place pour des autres JPanel a ajouter après.
0