代码之家  ›  专栏  ›  技术社区  ›  Steve Emmerson

为什么这个基于Swing的程序不终止呢?

  •  1
  • Steve Emmerson  · 技术社区  · 16 年前

    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 回复  |  直到 16 年前
        1
  •  3
  •   Ryan    16 年前

    首先,它不会终止于任何人的系统。

    原因是您正在调用一个JFrame,将其设置为零内容可见。它很可能隐藏在屏幕的左上角,非常小。如果关闭该帧,程序将终止。消息对话框与JFrame无关。

        2
  •  1
  •   TofuBeer    16 年前

    是的。。。(在我的机器上)会打开一个对话框。一旦你在对话框中点击“确定”,它就会打开JFrame。当您关闭JFrame时,它会终止应用程序。

    Yoy可能不想做你在构造器内部所做的工作。。。然后JFrame将显示在对话框之前。