Afficher une autre frame ? [Résolu]

Messages postés
220
Date d'inscription
jeudi 30 mars 2006
Dernière intervention
26 octobre 2007
- - Dernière réponse :  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
 
Afficher la suite 

Votre réponse

20/24 réponses

Meilleure réponse
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Dernière intervention
4 mars 2013
1
Merci
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();

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de cs_DARKSIDIOUS
Messages postés
220
Date d'inscription
jeudi 30 mars 2006
Dernière intervention
26 octobre 2007
0
Merci
Merci !!!
Commenter la réponse de lex1111
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Dernière intervention
26 juillet 2013
0
Merci
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
Commenter la réponse de Ombitious_Developper
Messages postés
220
Date d'inscription
jeudi 30 mars 2006
Dernière intervention
26 octobre 2007
0
Merci
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....
Commenter la réponse de lex1111
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Dernière intervention
26 juillet 2013
0
Merci
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"
Commenter la réponse de Ombitious_Developper
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Dernière intervention
26 juillet 2013
0
Merci
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
Commenter la réponse de Ombitious_Developper
Messages postés
220
Date d'inscription
jeudi 30 mars 2006
Dernière intervention
26 octobre 2007
0
Merci
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
Commenter la réponse de lex1111
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Dernière intervention
26 juillet 2013
0
Merci
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
Commenter la réponse de Ombitious_Developper
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Dernière intervention
26 juillet 2013
0
Merci
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
Commenter la réponse de Ombitious_Developper
Messages postés
220
Date d'inscription
jeudi 30 mars 2006
Dernière intervention
26 octobre 2007
0
Merci
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

 
Commenter la réponse de lex1111
Messages postés
220
Date d'inscription
jeudi 30 mars 2006
Dernière intervention
26 octobre 2007
0
Merci
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...
Commenter la réponse de lex1111
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Dernière intervention
26 juillet 2013
0
Merci
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
Commenter la réponse de Ombitious_Developper
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Dernière intervention
26 juillet 2013
0
Merci
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
Commenter la réponse de Ombitious_Developper
Messages postés
220
Date d'inscription
jeudi 30 mars 2006
Dernière intervention
26 octobre 2007
0
Merci
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
:)
Commenter la réponse de lex1111
Messages postés
220
Date d'inscription
jeudi 30 mars 2006
Dernière intervention
26 octobre 2007
0
Merci
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
Commenter la réponse de lex1111
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Dernière intervention
26 juillet 2013
0
Merci
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"
Commenter la réponse de Ombitious_Developper
Messages postés
220
Date d'inscription
jeudi 30 mars 2006
Dernière intervention
26 octobre 2007
0
Merci
^^
Je me doute que l'editeur visuel a ses limites...

mais bon c'est possible de disable ma jframe oui ou non ?
Commenter la réponse de lex1111
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Dernière intervention
26 juillet 2013
0
Merci
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"
Commenter la réponse de Ombitious_Developper
Messages postés
220
Date d'inscription
jeudi 30 mars 2006
Dernière intervention
26 octobre 2007
0
Merci
ok

merci pour tes réponses !

+
Commenter la réponse de lex1111
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Dernière intervention
26 juillet 2013
0
Merci
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
Commenter la réponse de Ombitious_Developper

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.