Afficher une autre frame ?

Résolu
lex1111 Messages postés 220 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 26 octobre 2007 - 3 avril 2007 à 19:00
 Twinuts - 4 avril 2007 à 10:12
Bonjour,

comment faire pour afficher une jframe a partir d'un clic sur un bouton ?

par exemple, je veux afficher ma fenêtre dont la jframe se nomme jframe1 par un clic sur un bouton  jbutton1 d'une autre jframe...

Et puis dans le même ordre d'idée, comment fermer la jframe1 en cliquant sur un bouton quitter de celle ci ?

Merci d'avance
 

24 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
3 avril 2007 à 19:16
il te suffit d'ajouter un ActionListener sur ton jbutton1, et mettre dans la méthode actionPerformed le code d'affichage du jframe :

new JFrame1().setVisible(true);

Et pour fermer la frame, mets dans la méthode actionPerformed :
dispose();
1
lex1111 Messages postés 220 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 26 octobre 2007 1
3 avril 2007 à 19:18
Merci !!!
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
3 avril 2007 à 19:48
Salut:

DarkSidious >> ce n'est pas suffisant ce que tu as écrit.

Il faut s'assurer de l'unicité de l'instance que tu lances en cliquant sur le bouton car si on appuie plusieurs fois sur le bouton on peut avoir une dizaines d'instances.

private MyFrame frame = null;

// ...

public void actionPerformed (ActionEvent ae) {
    if (ae.getSource () == btn) {
       if (frame1 == null) {
           frame = new MyFrame ();        
       }
       frame.setVisible (true);
    }
}


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts
0
lex1111 Messages postés 220 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 26 octobre 2007 1
3 avril 2007 à 20:28
Ok, merci pour ta solution...

Dans le même genre d'idée comment rendre la frame principale disable après avoir lancé la frame secondaire ?
C'est a dire que je ne veux pas que l'on puisse utiliser la frame principale lorsque la frame secondaire est ouverte....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
3 avril 2007 à 20:39
Salut:

Dans ce cas il faut que ton second frame soit une boîte de dialogue modale.

Changes:

public class ChildWindow extends JFrame {
    public ChildWindow (JFrame parentFrame) {
       super (parentFrame);
       // ...
    }  
}

Par


public class ChildWindow extends JDialogBox {

}

Suposons que c'est la classe de ta fenêtre principale:

public class MainFrame extends JFrame {
    private ChildWindow child = null;

    // ...
    child = new ChildWindow (this);
}



________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
3 avril 2007 à 20:40
Salut:

Petite réctification:




Dans ce cas il faut que ton second frame soit une boîte de dialogue modale.

Changes:

public class ChildWindow extends JFrame { 
}

Par

//
// Ici, nouvelles changements
//

public class ChildWindow extends JDialogBox {
   

public ChildWindow (JFrame parentFrame) {
       super (parentFrame);
       // ...
    }



}

Suposons que c'est la classe de ta fenêtre principale:

public class MainFrame extends JFrame {
    private ChildWindow child = null;

    // ...
    child = new ChildWindow (this);
}



________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts
0
lex1111 Messages postés 220 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 26 octobre 2007 1
3 avril 2007 à 20:43
J'ai rien compris ^^

Je ne vois pas en où dans ce que tu m'as dit je rend la jframe principale disable....

De plus, quand je disait que j'avais un jframe principale et une jframe secondaire, c'était juste un exemple, en fait les 2 jframes sont indépendantes....

merci de ton aide
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
3 avril 2007 à 20:48
Salut:

Bon, une boite de dialogue modale quand elle s'affiche elle bloque la fenêtre parent, tu ne peux pas revenir à ton frame principal qu'après avoir valider ou quitter ton boite de dialogue.


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
3 avril 2007 à 20:48
Salut:

Je pense que c'est ce que tu veux.


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts
0
lex1111 Messages postés 220 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 26 octobre 2007 1
3 avril 2007 à 20:53
C'est une méthode, mais utilisant netbeans/matisse, je ne peux pas gérer cela en visuel, ce que tu me propose m'obligerai a ajouter mes composants sur ma deuxième Jframe "à la main" alors que je prefere le faire a vec matisse....

N'y a t'il pas une méthode plus simple du genre  :
this.setenabled(false);

?

Merci d'avance

 
0
lex1111 Messages postés 220 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 26 octobre 2007 1
3 avril 2007 à 20:58
En plus j'ai l'impression que ce que tu me propose est de rajouter une simple dialogbox...alors que moi sur ma deuxième jframe j'ais plein de chose :
des jlist
des jbutton...
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
3 avril 2007 à 20:58
Salut:

J'appelle ce que tu veux du fabrication et ce n'est pas du vrai métier.

Mais si tu veux tu peux désactiver les composants de ton JFrame:

MainFrame mainFrame = ...; // Fenêtre principale

Component [] comps = mainFrame.getComponents ();
for (int i = 0; i < comps.length; ++i)
    comps [i].setEnabled (false);

Conseil: ne te laisses pas dépendre de l'éditeur visuel.


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
3 avril 2007 à 21:03
Salut:

un JDialog est comme un JFrame elle contient des composants.
Elle offre la fonctionalité de modalité.


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts
0
lex1111 Messages postés 220 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 26 octobre 2007 1
3 avril 2007 à 21:03
La programmation n'est pas pour moi un métier, mais seulement une activité personnelle...

De plus je commence à peine le java, je préfère m'aider au départ d'un éditeur visuel pour bien voir comment il me créer mes classes pour ensuite le faire moi même....

Bon sinon ce que tu me propose c'est de mettre disable chaque composants que contient ma jframe principale....
Je pense qu'il serait plus simple de rendre disable la Jframe en elle même est donc les composants qu'elles contient avec...
En tout cas c'est comme ça que je faisais en visual basic...

Est ce possible de rendre disable la jframe principale ? si oui comment ?

Merci d'avance
:)
0
lex1111 Messages postés 220 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 26 octobre 2007 1
3 avril 2007 à 21:21
PS :

    private void bt_advancedActionPerformed(java.awt.event.ActionEvent evt) {                                           

       new frame_recherche_avancee().setVisible(true);
       Component [] comps = frame_accueil.getComponents ();
        for (int i = 0; i < comps.length; ++i)
        comps [i].setEnabled (false);
}

ceci me génère un problème du type : "non-static method getcomponents cannot be referenced in a static context"
Le problème c'est que netbeans ne me laisse pas modifier "private void" en "private static void" du coup je ne sais pas comment régler ce problème
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
3 avril 2007 à 21:31
Salut:

C'est parmi les problèmes de l'éditeur visuel.




________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
0
lex1111 Messages postés 220 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 26 octobre 2007 1
3 avril 2007 à 21:34
^^
Je me doute que l'editeur visuel a ses limites...

mais bon c'est possible de disable ma jframe oui ou non ?
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
3 avril 2007 à 21:38
Salut:

Je ne sais pas. Mais je suis toujours pour la boîte de dialogue modale.


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
0
lex1111 Messages postés 220 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 26 octobre 2007 1
3 avril 2007 à 21:40
ok

merci pour tes réponses !

+
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
3 avril 2007 à 21:42
Salut:

Franchement les boite de dialogue modales sont les meilleurs solutions.

Je crois qu'on a dérrangé DarkSidious


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts
0
Rejoignez-nous