Почему эта тривиальная Swing-программа не заканчивается? - PullRequest
1 голос
/ 16 июля 2010

Почему эта Swing-программа не завершает работу, когда ее окно закрыто?

import javax.swing.JFrame;
import javax.swing.JOptionPane;

final class App extends JFrame {
    private App() {
        super("App");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        JOptionPane.showMessageDialog(this, "App works");
        pack();
    }

    public static void main(final String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new App().setVisible(true);
            }
        });
    }
}

Ответы [ 2 ]

3 голосов
/ 16 июля 2010

Прежде всего, это не заканчивается в чьей-либо системе.

Причина в том, что вы вызываете JFrame, который должен быть видимым с нулевым содержимым.Скорее всего, он скрывается очень маленьким в верхнем левом углу экрана.Если вы закроете этот кадр, ваша программа прекратит работу.Диалог сообщений не имеет ничего общего с JFrame.

1 голос
/ 16 июля 2010

Это делает ... что происходит (на моей машине), это то, что он открывает диалоговое окно.Как только вы нажмете «ОК» в этом диалоговом окне, откроется JFrame.Когда вы закрываете JFrame, он завершает работу приложения.

Yoy, вероятно, не хочет выполнять ту работу, которую вы делаете внутри конструктора ... тогда JFrame появится перед диалоговым окном.*

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