voilà le code de la méthode jButton1ActionPerformed :
Code:
1
2
3
4
5 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { ad.setVisible(true); back.dispose(); }
et le ligne 232 est la ligne ad.setVisible(true)
Version imprimable
voilà le code de la méthode jButton1ActionPerformed :
Code:
1
2
3
4
5 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { ad.setVisible(true); back.dispose(); }
et le ligne 232 est la ligne ad.setVisible(true)
alors si j'ai bien compris tu definis une classe qui s'appelle :
Background extends JFrame
dans cette classe tu definis une fonction d'initialisation qui s'appelle :
initComponents()
dans laquelle tu as:
jButton1.setText("Valider");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
a l'appui du bouton jButton1, que veux tu appeler comme classe ou comme Object??
est ce que ce dernier est un thread ou non?
par exemple si tu veux appeller un object TATA extends JFrame
tu definis un object de type TATA dans la declaration de toutes tes variables: public TATA tata = new TATA();
puis tu ecris
jButton1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
TATA.setVisible(true);
}
});
si tu veux que ta premiere fenetre disparaisse il faut faire un peu differemment....
j'espere que j'ai bien compris ton probleme et que ca peut t'aider...
Mince, c'est ad qui n'était pas initialisée. Il faut appeler son constructeur, sinon elle n'existe pas. Et si tu lui appelles une méthode, comme setVisible(true), ça lance une NullPointerException.
Il faut donc que tu appelles quelque part (dans le constructeur ou bien dans jButton1ActionPerformed) : ad = new Machin();
edit : en fait je répète ce qu'a dit matzeus.
C'est normal, car si ta seconde frame est definie dans une classe, il faut d'abord appeler un nouvel objet (je m'explique) :
Il faut que tu appeles le constructeur de la seconde frame, car sinon il ne sais tout simplement pas ce qu'est 'ad'.Code:
1
2
3
4
5
6 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { LaClasseDeAd ad = new LaClasseDeAd(); ad.setVisible(true); back.dispose(); }
(Je sais pas si j'ai été très clair :) )
tu as bien compris le problème
mais moi par contre je ne sais plus quoi faire pour que ca marche
On va faire plus simple :)
Quelles est le nom de la classe de ta second frame? (celle que tu appeles ad)
Tu as juste a rajouter la ligne suivante :
Avant la ligne :Code:
1
2 LeNomDeLaClasse ad = new LeNomDeLaClasse();
En principe cela devrait fonctionner.Code:
1
2 ad.setVisible(true);
Pour t'expliquer un peu plus le probleme :
En java tout est objet, c'est a dire que quand tu dis a ton programme "ad.setVisible(true)", celui-ci va rechercher l'objet appelé "ad" afin de lui appliquer la methode setVisible().
Dans ton cas, l'objet n'a pas été déclaré, c'est un peu comme si tu disais : je vais aller laver ma voiture, sans avoir acheté de voiture au préalable.
(Mes exemples me semblent couillon mais je vois pas comment expliquer autrement :) )
ca y est ca marche !!!!
Un grand MERCI à tous ceux qui m'ont aidé
ok on va simplifier les choses:
class Background extends ....
{
.....
public Background ()
{
...
initComponents()
.....
}
public void initComponents()
{
....
public TATA tata = new TATA();
...
jButton1.setText("Valider");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
...
}
public void jButton1ActionPerformed(java.awt.event.ActionEvent)
{
tata.setVisible(true);
this.dispose();
}
}
ca devrait marcher...