it-swarm.com.de

So schließen Sie eine GUI, wenn Sie eine JButton-Taste drücken

Weiß jemand, wie man ein Ji ein Gui schließen lässt? Ich denke, es ist wie System.CLOSE(0);, aber das hat nicht funktioniert. Es könnte auch exitActionPerformed(evt); sein, aber das hat auch nicht funktioniert. Nur die Codezeile funktioniert.

EDIT: egal Jungs. Die Antwort war System.exit(0);. Danke für die Hilfe!

14
PulsePanda

Fügen Sie Ihren Button hinzu:

JButton close = new JButton("Close");

Einen ActionListener hinzufügen:

close.addActionListner(new CloseListener());

Fügen Sie eine Klasse für den Listener hinzu, der die ActionListener-Schnittstelle implementiert, und überschreiben Sie dessen Hauptfunktion:

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

Dies ist möglicherweise nicht der beste Weg, aber es ist ein Anfangspunkt. Die Klasse kann zum Beispiel öffentlich gemacht werden und nicht als Privatklasse in einer anderen.

18
Baarn

Siehe JFrame.setDefaultCloseOperation(DISPOSE_ON_CLOSE)1. Sie können auch EXIT_ON_CLOSE verwenden. Es ist jedoch besser, laufende Threads explizit zu bereinigen. Wenn das letzte GUI-Element unsichtbar wird, wird EDT & JRE beendet.

Die Schaltfläche zum Aufrufen dieser Operation befindet sich bereits in einem Frame.

  1. Siehe diese Antwort bis Wie positioniere ich Swing-GUIs am besten? für eine Demo. der DISPOSE_ON_CLOSE Funktionalität.

    Die JRE wird beendet, nachdem alle 3 Frames durch Klicken auf geschlossen wurden X Taste.

7
Andrew Thompson

Durch die Verwendung von System.exit (0); Sie würden den gesamten Prozess abschließen. Wollten Sie, oder wollten Sie nur das GUI-Fenster schließen und die Ausführung des Prozesses zulassen?

Die schnellste, einfachste und robusteste Methode zum einfachen Schließen eines JFrame oder JPanel mit einem Klick auf einen JButton ist das Hinzufügen eines actionListener zum JButton, der beim Klicken auf den JButton die folgende Codezeile ausführt:

this.dispose();

Wenn Sie den NetBeans GUI-Designer verwenden, können Sie diesen actionListener am einfachsten hinzufügen, indem Sie das GUI-Editor-Fenster öffnen und auf die JButton-Komponente doppelklicken. Dadurch werden automatisch ein actionListener und ein actionEvent erstellt, die von Ihnen manuell geändert werden können.

6
Dillon Chaffey

Sie können die Methode Window # dispose () verwenden, um alle systemeigenen Bildschirmressourcen, Unterkomponenten und alle zugehörigen untergeordneten Elemente zu veröffentlichen.

Die System.exit(0) beendet die aktuell ausgeführte Java Virtual Machine.

3
adatapost

In Java 8 können Sie Lambda-Ausdrücke verwenden, um es einfacher zu machen.

Schließe die Anwendung

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

Fenster schließen

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

Erstellen Sie eine Methode und rufen Sie sie auf, um den JFrame zu schließen. Beispiel:

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