Ich möchte ein Java-Fenster schließen, selbst wenn gerade eine Funktion ausgeführt wird - gibt es eine Möglichkeit, dies zu tun? Ich habe einige Funktionen, die unter bestimmten Bedingungen (z. B. von einer CD oder einem anderen nicht lokalen Ort) eine ganze Weile dauern und ich möchte diese Funktionen zwangsweise anhalten und das Programm vollständig beenden können. Ist das möglich? Und wie kann ich es tun?Wie erzwinge das Schließen eines Fensters in Java?
Mein Code zum Verlassen unter:
this.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent windowEvent) {
if (closeApplication()) {
System.exit(0);
}
}
});
Und die closeApplication() Funktion:
private boolean closeApplication() {
final JFrame temp = this;
int exitDialogResult = JOptionPane.showConfirmDialog(temp,
"Are you sure you want to exit?", "Really Closing?",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE);
if (exitDialogResult == JOptionPane.YES_OPTION) {
//code here to stop various processes
return true;
}
else {
return false;
}
}
Schnell bearbeiten zu klären: Wenn mein Programm eine lange Lauffunktion ausführt und ich versuche, Um das Fenster zu schließen, registriert der Fenster-Listener den Klick nicht einmal.
['System.exit (x)'] (https: // docs.oracle.com/javase/8/docs/api/java/lang/System.html#exit-int-) hält die JVM an. Was stimmt damit nicht? – bcsb1001
@ bcsb1001 Der Fenster-Listener wird überhaupt nicht getroffen - es ist ein Problem, tatsächlich auf diesen Aufruf zuzugreifen, anstatt ihn erst zu machen, nachdem das Close-Event ausgelöst wurde. – Charlotte