didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 2017
-
4 mars 2007 à 18:07
didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 2017
-
5 mars 2007 à 18:49
Bonjour a tous.
Voila, je suis entrain de faire une appli dans laquelle il ya plusieurs JFrame (une par class).
J'ai une JFrame principale et 4 autres (auxilieres) qui sont appellé par la principale (lorsque l'utilisateur le demande).
je veux que ma JFrame principale ne soit plus visible (.setVisible(false);) lorsqu'une des JFrame auxiliere est visible.
j'ai essayer plusieurs code mais aucun ne donnais ce que j'esperais.
Voila un des codes:
//J'appel et affiche la class Option1
new Option1.setVisible(true);
//Je cache la JFrame principale (this)
this.setVisible(false);
//Dans une boucle, je test si Option1 est visible.
Thread FenetreIsVisible = new Thread(){
public void run(){
while(Ouvrir1.isVisible()){}
}
};
FenetreIsVisible.start();
//Lorsqu'elle n'est plus visible, on reaffiche la JFrame principale (this).
this.setVisible(true);
java me genere une exception :
non-static method isVisible() cannot be referenced from a static context
je ne compend pas, car le code que j'ai mit au-dessus, est dans une methode de type void (public void AppelOption1(){...})
est ce que vous sauriez pourquoi, et comment est ce que je peux faire pour que cela fonctionne ?
merci.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013131 5 mars 2007 à 17:32
Normal dans ton code, tu créer une nouvelle instance de option1 à laquelle tu applique le listener mais uniquement sur cette nouvelle instance, il faut que tu fasse :
Option1 TaFrame = new Option1();
TaFrame.getFrame().addWindowAdapter(...);
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013131 4 mars 2007 à 18:23
Aïe ! Au lieu de faire un while(isVisible) qui te prend 100 % du proc, il vaux mieux ajouter un listener à ta frame principale :
TaFrame.addWindowAdapter(new WindowAdapter {
public void WindowClosed(...) {
// la fenêtre est fermée
}
});
didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 20172 4 mars 2007 à 18:32
Bonjour.
Mon "while(...)" ne verifie pas si la fenetre principale est visible mais plutot si le fenetre Option1 (auxiliaire) l'est ou non.
Par consequent le code que tu m'a fourni ne me (il me semble) permet pas de savoir si Option1 est visible.
merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013131 4 mars 2007 à 18:40
Bien sûr que si, à toi d'adapter le code pour appliquer un listener sur ce que tu veux.
Le listener n'est invoqué que lors d'un événement précis, ce qui évite de recourir justement à une boucle infinie qui elle consomme tout le temps CPU !
didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 20172 5 mars 2007 à 17:15
Bonjour.
je n'arrive pas a jouter de listener a la frame de ma class Option1.
voila ce que je fait:
Dans option1:
public JFrame getFrame(){
return this.;
}
dans la fenetre principale:
new Option1().getFrame().addWindowAdapter(new WindowAdapter() {
public void WindowClosed(WindowEvent evt) {
System.out.println("Fenetre Option1 Fermé.");
//ici tous le bordel (mdr)
}
});
merci.
ca fait depuis hier soir que je tourne le code dans tous les sens mais je ne trouve rien qui fonctionne.
merci.