Это самый распространенный случай? - PullRequest
2 голосов
/ 12 мая 2010

Почему, когда я нажимаю кнопку x, чтобы закрыть окно в приложении Java, только окно исчезает, а приложение все еще работает.

Я столько раз читал, что Java-дизайнеры пытались приспособить поведение Java к наиболее распространенным потребностям программистов, сэкономить драгоценное время и так далее, и так далее. Что является более распространенным случаем, чем закрытие приложения, когда я нажимаю кнопку X?

Ответы [ 3 ]

8 голосов
/ 12 мая 2010

Какой бы ни была причина, это действительно не имеет значения, если вы знаете, как она работает и как заставить вашу программу вести себя так, как вы хотите.

Хотя предположим: у одного приложения может быть несколько окон, выход из приложения при закрытии одного из них не выглядит очень умным. Отслеживание того, сколько окон открыто / закрыто / скрыто / еще не показано, и поэтому возможность выхода из него после закрытия последних окон могла быть слишком большой работой / слишком большим количеством крайних случаев и т. Д. Таким образом, это зависит от нас, программистов , когда мы хотим, чтобы наше приложение выходило.

В любом случае, если вы хотите, чтобы ваше приложение закрывалось при закрытии окна (JFrame), вы можете просто сказать ему сделать это:

myJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
7 голосов
/ 12 мая 2010

Во многих приложениях открыто более одного окна одновременно, и закрытие одного окна определенно не должно завершать работу всего приложения.

Кроме того, большинство приложений хотят сделать немного больше, чем простое System.exit(0); при выходе. Они могут попросить пользователя сохранить некоторые файлы (или сохранить их автоматически), они могут захотеть очистить некоторые временные файлы или уведомить некоторый удаленный хост о своем отключении или что-то в этом роде.

По сути, очень маловероятно, что единственный эффект закрытия окна - завершение JVM.

0 голосов
/ 13 мая 2010
myJFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

Утилизация почти всегда предпочтительна. Если вы явно скажете EXIT_ON_CLOSE и вам когда-нибудь захочется отобразить более одного окна, вам нужно будет изменить свой код, чтобы вместо него использовать DISPOSE_ON_CLOSE. Конечно, не такая уж большая сделка, просто кажется лучшим выбором.

По моему мнению, DISPOSE_ON_CLOSE должен был быть по умолчанию, а не HIDE_ON_CLOSE. Ну что ж, это то, что у нас есть. EXIT_ON_CLOSE, вероятно, следует избегать по той же причине, по которой следует избегать вызова System.exit (0) в обработчике окон (хотя сам по себе в этом нет ничего плохого, он просто не очень гибкий в будущем).

Более того, почти всегда предпочтительнее присоединить WindowListener к вашему фрейму и установить значение по умолчанию близко к JFrame.DO_NOTHING_ON_CLOSE. Таким образом, вы контролируете, когда ваше приложение закрывается, включая приглашение пользователю сохранить любую работу и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...