Question

J'ai un petit cadre où je demande à l'utilisateur et mot de passe. Ce cadre sera ouvert en cliquant sur un bouton dans une fenêtre principale.

J'ai deux boutons: ok et cancel

.

Lorsque je clique sur le bouton « annuler », je dois fermer ce cadre sans quitter l'application.

Comment puis-je faire?

Était-ce utile?

La solution

Vous pouvez utiliser Frame.hide () ou Frame.dispose (). Je recommande également de se pencher sur JDialog ou JOptionPane

Correction: hide () est dépréciée. SetVisible (false) doit être utilisé à la place

Autres conseils

Peut-être un moyen plus propre est juste changer setDefaultCloseOperation de EXIT_ON_CLOSE à DISPOSE_ON_CLOSE:

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

Vous pouvez appeler setVisible (false) sur le cadre.

Vous pouvez également appeler setDefaultCloseOperation sur le cadre passant HIDE_ON_CLOSE (info ici: http://java.sun.com/javase/6/docs/api/javax/swing/JFrame.html#setDefaultCloseOperation%28int%29 ) . Cela permettra d'éviter l'application d'aller loin si l'utilisateur touche le « X » sur la JFrame pour le fermer.

Utilisation this.dispose(); dans l'action méthode d'écouteur lorsque le nom d'utilisateur / mot de passe réussit. par exemple:

public void actionPerformed(ActionEvent ae) {

    if(ae.getSource()=="button you press to confirm username/password"){
        if(userNameTf.getText().equals(username)&&isPassword(passwordTf.getPassword())){
            new "window to be opened upon success"
            this.dispose(); // calls dispose on this object ie. 
                                            // the login window 
        }
        else{
            userNameTf.setText("");
            passwordTf.setText("");

            JOptionPane.showMessageDialog(this,
                    "Username and/or password is incorrect!",
                    "Attention!",
                    JOptionPane.WARNING_MESSAGE);
        }
    }

}

Si vous utilisez les classes internes pour gérer les événements il suffit de remplacer 'this.Dispose ()' avec Super_Class_Name.this.dispose ();

Assurez-vous de ne pas:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

méthode setVisible ne libère pas les ressources de mémoire et doit être utilisé que lorsque le formulaire doit être utilisé à nouveau.

La méthode Éliminez Libère toutes les ressources utilisées par écran natif de cette fenêtre, ses sous-composants, et tous ses enfants appartenant. Autrement dit, les ressources de ces composants seront détruits, toute mémoire qu'ils consomment sera retourné au système d'exploitation, et ils seront marqués comme affichable.

Faire une fonction dans la classe externe où vous implémentez le JFrame (vous devez fermer le appuyant sur le bouton annuler).
Ecrire this.setVisible(false); dans la mise en œuvre de cette fonction.
Enfin appeler cette fonction dans la mise en œuvre de ActionListener lorsque vous souhaitez fermer.

Vous pouvez le faire à bien des égards, mais ces deux façons sont les plus utilisés un
1. écriture this.setVisible(false) mis en œuvre à l'intérieur ActionListener ou
2. écrire this.dispose() à l'intérieur mis en place ActionListener . Espérons que cela vous aidera.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top