当JDialog是主窗口时正确关闭java程序

jax*_*jax 6 java swing windowlistener

我有一个JDialog作为我的应用程序中的主窗口(最初它是一个JFrame,但它在任务栏中显示我不想要).

目前我在做:

setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
Run Code Online (Sandbox Code Playgroud)

当我点击退出按钮时:

frame.dispose();
Run Code Online (Sandbox Code Playgroud)

但这个过程似乎仍然在后台徘徊

JFrame JFrame.EXIT_ON_CLOSE似乎做了我想做的事.

如何正确关闭我的应用程序?

Ita*_*man 11

您需要添加一个WindowListener,它将在对话框关闭时执行System.exit(0).

JDialog dialog = ...;
dialog.addWindowListener(new WindowAdapter() { 
    @Override public void windowClosed(WindowEvent e) { 
      System.exit(0);
    }
  });
Run Code Online (Sandbox Code Playgroud)

当然,仍然需要在按下Exit按钮(在此线程的其他位置建议)之后的System.exit(0).


Vin*_*nie 6

你可以加

  System.exit(0);
Run Code Online (Sandbox Code Playgroud)

你希望程序结束的地方,也许是在dispose()行之后.