Что отличается между параметрами SetDefaultCloseOperation?

чем отличается от DISPOSE_ON_CLOSE и EXIT_ON_CLOSE в методе setDefaultCloseOperation в классе JFrame?

2 ответа

Как следует из их названия, располагать при близком расположении окна, когда он закрывается при выходе на закрытие, выходит JVM при закрытии окна. Если окно является JFrame, и если оно отображается в последнем окне, и если нет потоков не-демона, они будут делать то же самое - выйти из jvm. По API:

Когда последнее отображаемое окно в виртуальной машине Java (VM) удаляется, виртуальная машина может завершаться.

Из-за этого я предпочитаю использовать dispose на закрытии.


EXIT_ON_CLOSE завершает полный поток, вызывая System.exit(0). DISPOSE_ON_CLOSE только закрывает jframe, поток работает до тех пор, пока он не завершится чем-то другим. Вы можете проверить это с помощью программы, которая имеет 2 JFrames с двумя различными операциями закрытия. Если вы закроете один из них с EXIT_ON_CLOSE оба EXIT_ON_CLOSE закроются, но если вы закроете тот, у которого DISPOSE_ON_CLOSE установлен как закрытый, только этот будет исчезать, а другой останется.

licensed under cc by-sa 3.0 with attribution.