Comment revenir à une JFrames en Java
J'ai un bouton dans une JFrame, si elle est pressée, elle nous emmène dans un autre cadre.
J'ai utilisé ce code:
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
SecondForm secondform = new SecondForm();
secondform.setVisible(true);
setVisible(false);
dispose();
}
De sorte que le nouveau cadre s'ouvre et tout est ok. Puis j'ai placé un bouton -dans la deuxième image - pour revenir à l'image précédente. J'ai utilisé ce code:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
MainForm Mform = new MainForm();
Mform.setVisible(true);
setVisible(false);
dispose();
}
La chose est, je ne pense pas que ce soit la bonne façon de le faire. Ce que je veux, c'est:
- cacher la première image
- montrer le nouveau deuxième
- disposer le second
- afficher à nouveau la première
Est-il un moyen de le faire à l'aide de la première MainForm exemple et de ne pas en créer un nouveau à chaque fois que je veux revenir en arrière.
J'ai surveillé mon programme et chaque fois que je vais en arrière et en avant les images et comme je le soupçonnais, la ram utilisée par elle continue à augmenter.
Merci d'avance.
EDIT : j'ai un système de connexion et lorsque l'utilisateur de mettre les bonnes informations d'identification d'un nouveau ManiForm instance est créée.
MainForm Mform = new MainForm();
Mform.setVisible(true);
C'est l'exemple que je veux utiliser. Ii-il un moyen de faire MForm de nouveau visible à partir de la secondform?
Tout d'abord merci pour l'aide!
Je suis d'accord qu'il est plus facile de ne pas utiliser plus d'un JFrames, mais pouvez-vous svp me dire quelle est la meilleure manière de faire ce que j'ai demandé dans le premier post?
La réponse Robin m'a donné est très joli, mais je ne sais pas quoi mettre comme argument il*:
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
* new SecondForm().setVisible(true);
}
});
C'est du code généré automatiquement à partir de NetBeans.
J'ai essayé
new SecondForm(super).setVisible(true);
mais j'ai toujours des erreurs de compilation. Apparemment je dois mettre super.something()
mais je ne sais pas quoi. J'ai essayé beaucoup mais pas de chance.
- Combien d'applications professionnelles utilisez-vous ce swap de windows bon gré mal gré? Pas beaucoup, je parie. Au lieu de considérer la permutation de vues à l'aide d'un seul JFrame et un CardLayout que des swaps de JPanels, chacun ayant une vision différente de votre interface graphique.
- d'accord. Ou d'ouvrir une nouvelle boîte de dialogue, mais au moins laisser l'original de la fenêtre principale de l'application visible et actif
Vous devez vous connecter pour publier un commentaire.
vous ne devriez pas utiliser plus d'une image.
Vous devriez avoir RIEN dans la JFrame à l'exception defaultExitOperation, la taille, la preferedsize et visible vrai.
Au lieu de placer tous les boutons et les champs en Composite et ajouter/supprimer le Composite à partir de la JFrame.
Si vous voulez une autre Fenêtre ouverte utilisation JDialog.
btw: vous pouvez avoir votre MainFrame setVisible faux et ouvrir un JDialog avec votre MainFrame en tant que parent. Seulement, si quelqu'un écrit en bas à droite de l'utilisateur + mot de passe vous faire de l'armature visible.
Si vous passer vos
MainForm
à laSecondForm
classe (par exemple à l'aide d'un paramètre dans le constructeur) laSecondForm
exemple, peut faire l'originalMainForm
instance visible, plutôt que d'en créer un nouveau.Par exemple
et dans votre
MainForm
classeMainForm
instance à laSecondForm
classe. Et puis commencer à lire les autres réponses et commentaires de décider si vous avez vraiment envie de commencer la permutation des cadres/* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new SecondForm().setVisible(true); } });
Pour des applications swing, la norme est d'utiliser un STATIQUE de la TRAME PRINCIPALE, en d'autres termes, faire de votre cadre principal (mframe) statique et ajouter des méthodes à la pop-up de nouvelles images, des dialogues, des optionPanes, etc. Vous pouvez même contrôler la visibilité de la trame principale lancer les appels statiques. C'est la façon dont vous mettez en œuvre un CADRE UNIQUE pour votre application, même quand vous exemple d'autres images pour la navigation, tous les enfants de cadres peut se référer à la trame principale sans avoir besoin de passer en tant que paramètre de constructeurs ou de créer de nouvelles instances de celui-ci.
La Classe Principale
`/* pour démarrer l'application */
`
Le Cadre Principal
`/* pour créer le cadre principal */
`
L'image enfant
`/* pour ouvrir les frames enfants qui permet de contrôler la visibilité de la fenêtre principale*/
`