Почему окно закрылось, а приложение нет SWING?

Если окно закрылось, а приложение продолжает работать, это может быть вызвано несколькими причинами. Одна из самых распространенных причин - некорректная обработка события закрытия окна.

В Java Swing для обработки события закрытия окна можно использовать класс WindowListener или адаптер класса WindowAdapter. Эти классы позволяют переопределить метод windowClosing, который вызывается при закрытии окна. Внутри этого метода можно выполнить нужные операции, например, сохранить данные или завершить потоки.

Однако, если вы не обработали событие закрытия окна, то по умолчанию окно будет закрыто, а приложение - нет. Это связано с тем, что в Java Swing окно - это отдельный компонент, а приложение - это процесс, который может включать в себя несколько окон. Если закрыть окно, то оно просто скрывается, но процесс Java-приложения продолжает выполняться.

Чтобы полностью завершить приложение при закрытии окна, можно использовать метод setDefaultCloseOperation класса JFrame. Этот метод определяет действие при закрытии окна. Например, setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) указывает, что при закрытии окна должен быть вызван метод System.exit(), который завершает процесс приложения.

Вот пример кода, который позволяет завершить приложение при закрытии окна:

import javax.swing.JFrame;

public class Main {
    public static void main(String[] args) {
        JFrame frame = new JFrame("My App");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        // Добавьте компоненты окна и настройте его
        
        frame.pack();
        frame.setVisible(true);
    }
}

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