J'ai conçu deux JFrames dans NetBeans.
Lorsque je clique sur le bouton "règles" (c'est-à-dire placé sur JFrame1), un deuxième JFrame s'ouvre (mais JFrame2 s'ouvre par-dessus la fenêtre de JFrame1, c'est ce que je ne veux pas) . Dans le second JFrame, il y a un bouton "fermer". Mais lorsque je clique sur ce bouton, je veux que JFrame1 soit ouvert et qu'il fonctionne aussi, mais JFrame2 n'est pas fermé et JFrame1 apparaît par-dessus JFrame2.
En bref, le formulaire principal est JFrame1. Lorsque je clique sur le bouton "règles" de JFrame1, il ouvre JFrame2 sur JFrame1. Dans JFrame2, il existe un bouton "fermer" lorsqu'il est cliqué, le formulaire principal (i.e JFrame1) est lancé, mais il est lancé via JFrame2.
Le scénario est JFframe1 -> JFrame2 -> JFrame1
Maintenant, ma question est après avoir cliqué sur le bouton "règles", JFrame1 doit être fermé et JFrame2 affiché à l'écran et vice versa.
En supposant que votre bouton ait un actionListener, après avoir cliqué sur le "bouton des règles" inséré:
JFrame1.dispose(); //Remove JFrame 1
JFrame2.setVisible(true) //Show other frame
Et puis reverese pour la réaction opposée
Une telle chose devrait être sur le constructeur ou la méthode qui crée JFrame2:
btnCancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//call another method in the same class which will close this Jframe
CloseFrame();
}
});
C'est la méthode qui devrait fermer JFrame2
public void CloseFrame(){
super.dispose();
}
Je ne suis en aucun cas un expert, mais j'ai aussi rencontré ce problème. Si vous définissez votre deuxième JFrame sur masqué, lorsque vous cliquez sur "Annuler", le deuxième JFrame se ferme.
//this is the code for the "cancel" button action listener
public void actionPerformed(ActionEvent e) {
setVisible(false);//hides the second JFrame and returns to the primary
Si cela ne fonctionne pas, essayez ceci
JFrame1.dispose(); //Remove JFrame 1
JFrame2.setVisible(true) //Show other frame
JFrame2.setVisible(true);
this.dispose();
Exemple:
//btn event inside 1st JFrame/window
private void jButton1ActionPerformed(Java.awt.event.ActionEvent evt) {
MainProgram.openResultsForm(); //MainProgram opens 2nd window
MainProgram.queryEntryForm.dispose(); //MainProgam closes this,
//the 1st window
}
cela a fonctionné pour moi (Frame1
appelé RegScreen
et Frame2
appelé MainScreen
):
RegScreen.this.setVisible(false);
new MainScreen().setVisible(true);
Espérons que cela aide :) Regscreen
était le cadre d'origine ouvert au démarrage.