В чем разница между этими двумя методами - System.exit()
и JFrame.dispose()
?
Если мы хотим закрыть приложение Java Swing при нажатии кнопки, какой метод я должен использовать?
В чем разница между этими двумя методами - System.exit()
и JFrame.dispose()
?
Если мы хотим закрыть приложение Java Swing при нажатии кнопки, какой метод я должен использовать?
System.exit();
заставляет виртуальную машину Java полностью завершаться.
JFrame.dispose();
заставляет окно JFrame
уничтожаться и очищаться операционной системой. Согласно документации , это может привести к завершению работы Java VM, если нет других доступных Windows, но это действительно должно рассматриваться как побочный эффект, а не норма.
Тот, который вы выбираете, действительно зависит от вашей ситуации. Если вы хотите завершить все в текущей виртуальной машине Java, вы должны использовать System.exit()
, и все будет очищено. Если вы хотите только уничтожить текущее окно, с побочным эффектом, что он закроет виртуальную машину Java, если это единственное окно, используйте JFrame.dispose()
.
JFrame.dispose()
public void dispose()
Освобождает все ресурсы экрана, используемые этим окном, его подкомпонентами и всеми его дочерними пользователями. То есть ресурсы для этих Компонентов будут уничтожены, любая память, которую они потребляют, будет возвращена ОС, и они будут отмечены как не отображаемые. Окно и его подкомпоненты можно снова отобразить, восстановив собственные ресурсы с последующим вызовом для упаковки или показа. Состояние обновленного окна и его подкомпонентов будет идентичным состояниям этих объектов в точке, где было расположено Окно (не учитывающее дополнительных изменений между этими действиями).
Примечание.. Когда последнее отображаемое окно в виртуальной машине Java (VM) удаляется, виртуальная машина может завершаться. Дополнительные сведения см. В разделе AWT Threading Issues.
System.exit()
public static void exit(int status)
Завершает работу запущенной виртуальной машины Java. Аргумент служит в качестве кода состояния; по соглашению, отличный от нуля код состояния указывает на ненормальное завершение. Этот метод вызывает метод exit в классе Runtime. Этот метод никогда не возвращается нормально.
Вызов System.exit(n)
фактически эквивалентен вызову:
Runtime.getRuntime().exit(n)
В дополнение к вышесказанному вы можете использовать System.exit()
, чтобы вернуть код выхода, который может быть очень полезен специально, если вы вызываете процесс автоматически с помощью System.exit(code);
, это может помочь вам определить, например, если произошла ошибка во время пробег.
Если у вас открыто несколько окон и вы хотите закрыть только тот, который был закрыт, используйте JFrame.dispose().
Если вы хотите закрыть все окна и прекратить использование приложения System.exit()