web-dev-qa-db-fra.com

Comment fermer une interface graphique lorsque je pousse un JButton

Est-ce que quelqu'un sait comment faire un jbutton fermer une interface graphique? Je pense que c'est comme System.CLOSE(0); mais cela n'a pas fonctionné. il pourrait également s'agir de exitActionPerformed(evt);, mais cela n'a pas fonctionné non plus. seule la ligne de code fonctionnera.

EDIT: peu importe les gars. la réponse était System.exit(0);. Merci pour l'aide en tout cas!

14
PulsePanda

Ajoutez votre bouton:

JButton close = new JButton("Close");

Ajouter un ActionListener:

close.addActionListner(new CloseListener());

Ajoutez une classe pour le Listener implémentant l'interface ActionListener et remplacez sa fonction principale:

private class CloseListener implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e) {
        //DO SOMETHING
        System.exit(0);
    }
}

Ce n'est peut-être pas la meilleure solution, mais c'est un point de départ. La classe par exemple peut être rendue publique et non pas en tant que classe privée dans une autre classe.

18
Baarn

Voir JFrame.setDefaultCloseOperation(DISPOSE_ON_CLOSE)1. Vous pouvez également utiliser EXIT_ON_CLOSE , mais il est préférable de nettoyer explicitement les threads en cours d'exécution. Lorsque le dernier élément de l'interface graphique devient invisible, EDT & JRE se termine.

Le 'bouton' pour invoquer cette opération est déjà sur un cadre.

  1. Voir cette réponse à Comment positionner au mieux les interfaces graphiques Swing? pour une démonstration. de la fonctionnalité DISPOSE_ON_CLOSE.

    JRE se terminera après la fermeture de les 3 images en cliquant sur le bouton X bouton.

7
Andrew Thompson

En utilisant System.exit (0); vous fermeriez le processus entier. Est-ce ce que vous souhaitiez ou aviez-vous l'intention de fermer uniquement la fenêtre de l'interface graphique et de permettre au processus de continuer à s'exécuter?

Le moyen le plus rapide, le plus simple et le plus robuste de fermer simplement un JFrame ou JPanel avec le clic d'un JButton consiste à ajouter un actionListener au JButton qui exécutera la ligne de code ci-dessous lorsque l'utilisateur cliquera sur le JButton:

this.dispose();

Si vous utilisez le concepteur d'interface graphique NetBeans, le moyen le plus simple d'ajouter cette actionListener consiste à entrer dans la fenêtre de l'éditeur d'interface graphique et à double-cliquer sur le composant JButton. Cela créera automatiquement actionListener et actionEvent, que vous pourrez modifier manuellement.

6
Dillon Chaffey

Vous pouvez utiliser Window # dispose () method pour libérer toutes les ressources d’écran natif, les sous-composants et tous ses enfants.

System.exit(0) mettra fin à la machine virtuelle Java en cours d'exécution.

3
adatapost

En Java 8, vous pouvez utiliser des expressions Lambda pour simplifier les choses.

Fermer l'application

JButton btnClose = new JButton("Close");
btnClose.addActionListener(e -> System.exit(0));

Fermer la fenêtre

JButton btnClose = new JButton("Close");
btnClose.addActionListener(e -> this.dispose());
2
ciri-cuervo

Créez une méthode et appelez-la pour fermer le JFrame, par exemple:

public void CloseJframe(){
    super.dispose();
}
2
Amazigh
JButton close = new JButton("Close");
close.addActionListener(this);
public void actionPerformed(ActionEvent closing) { 
// getSource() checks for the source of clicked Button , compares with the name of button in which here is close .     
if(closing.getSource()==close)
   System.exit(0);
   // This exit Your GUI 
}
/*Some Answers were asking for @override which is overriding the method the super class or the parent class and creating different objects and etc which makes the answer too long . Note : we just need to import Java.awt.*; and Java.swing.*; and Adding this command : class className implements actionListener{} */
0
Niamatullah Bakhshi