Подтвердить что ты не робот

JFrame.dispose() vs System.exit()

В чем разница между этими двумя методами - System.exit() и JFrame.dispose()?

Если мы хотим закрыть приложение Java Swing при нажатии кнопки, какой метод я должен использовать?

4b9b3361

Ответ 1

System.exit(); заставляет виртуальную машину Java полностью завершаться.

JFrame.dispose(); заставляет окно JFrame уничтожаться и очищаться операционной системой. Согласно документации , это может привести к завершению работы Java VM, если нет других доступных Windows, но это действительно должно рассматриваться как побочный эффект, а не норма.

Тот, который вы выбираете, действительно зависит от вашей ситуации. Если вы хотите завершить все в текущей виртуальной машине Java, вы должны использовать System.exit(), и все будет очищено. Если вы хотите только уничтожить текущее окно, с побочным эффектом, что он закроет виртуальную машину Java, если это единственное окно, используйте JFrame.dispose().

Ответ 2

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)

Ответ 3

В дополнение к вышесказанному вы можете использовать System.exit(), чтобы вернуть код выхода, который может быть очень полезен специально, если вы вызываете процесс автоматически с помощью System.exit(code);, это может помочь вам определить, например, если произошла ошибка во время пробег.

Ответ 4

  • Если у вас открыто несколько окон и вы хотите закрыть только тот, который был закрыт, используйте JFrame.dispose().

  • Если вы хотите закрыть все окна и прекратить использование приложения System.exit()