2011-05-21 64 views

回答

30

也许这一个,但张贴霍华德说读教程WindowListener之前,有

WindowListener exitListener = new WindowAdapter() { 

    @Override 
    public void windowClosing(WindowEvent e) { 
     int confirm = JOptionPane.showOptionDialog(
      null, "Are You Sure to Close Application?", 
      "Exit Confirmation", JOptionPane.YES_NO_OPTION, 
      JOptionPane.QUESTION_MESSAGE, null, null, null); 
     if (confirm == 0) { 
      System.exit(0); 
     } 
    } 
}; 
frame.addWindowListener(exitListener); 
4

您可以将WindowListener添加到您的相框(请参阅,例如here)。

8

您可以添加一个window listener的框架:

frame.addWindowListener(new WindowAdapter() { 
    public void windowClosing(WindowEvent evt) { 
    onExit(); 
    } 
    }); 

... 
public void onExit() { 
    System.err.println("Exit"); 
    System.exit(0); 
} 
26

所有上述的一些/其他选项建议是正确的,因为你需要使用WindowListener。

但是所有的答案也是不完整的,因为它们忘了提,你可能还需要添加:

frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 
frame.addWindowListener(...); 

这将使你的代码,以窗关闭过程窗口的完全控制会除非您告诉它(通常通过在框架上使用dispose()方法),否则不会自动关闭。这允许您提示用户确认是否关闭窗口。

Closing an Application有一个简单的API,允许您创建一个简单的Action,当窗口关闭时执行。它为您管理关闭操作和窗口监听器代码。

相关问题