2014-02-22 85 views
-1

我有一个JFrame,我想知道何时关闭按钮被点击为JFrame。当JFrame关闭时,我的整个项目都没有关闭,所以我想能够告诉用户什么时候关闭那个Frame。当JFrame关闭时

我已经使用像作为!f.isShowing!m.f.isActive(方法试过),但是当我关闭框架,我希望发生的没有。

+0

阅读:http://stackoverflow.com/questions/1234912/how-to-programmatically-close-a-jframe?rq=1 – Stuart

+0

我不不想关闭它,我想知道它是什么时候用户关闭它。 – user3341532

+0

要明确一点,当框架关闭时,您是否遇到运行不会结束的问题,还是您想在框架关闭时执行某些操作?因为在你的问题中都提到了。 – BitNinja

回答

1
import javax.swing.JOptionPane; 
frame.addWindowListener(new java.awt.event.WindowAdapter() { 
    @Override 
    public void windowClosing(java.awt.event.WindowEvent windowEvent) { 
     if (JOptionPane.showConfirmDialog(frame,...) ...) { 
      // ... 
      System.exit(0); 
     } 
    } 
}); 
+2

@ dic19垃圾,System.exit指示JVM以受控和已知方式终止,并且不会终止,直到所有非守护线程也终止。 – MadProgrammer

+0

@MadProgrammer我错了我的完全Java生活我猜:P – dic19

+0

@ dic19我知道这种感觉;) – MadProgrammer

3

如果你不想做什么特别当框架关闭时,您可以使用setDefaultCloseOperation方式的转变,一个JFrame

EXIT_ON_CLOSE 

退出应用程序默认窗口关闭操作。如果一个窗口有 这个设置为关闭操作,并且在一个小程序中关闭,则可能会抛出SecurityException。建议您仅在应用程序中使用此 。

HIDE_ON_CLOSE 

的隐藏窗口的默认窗口关闭操作

DISPOSE_ON_CLOSE 

的Dispose窗口的默认窗口关闭操作。注意:当Java虚拟机(VM)内的最后一个可显示窗口被配置为 时,VM可能会终止。有关更多 信息,请参阅AWT线程问题。

+0

1+,但我猜他真的想要一个模态的JDialog,因为他想知道什么时候窗口关闭,不想关闭应用程序。但直到他讲得更多,谁知道呢? –

+0

@HovercraftFullOfEels这是我认为的有点,因此开幕声明的原因 – MadProgrammer

0

JFrame关闭我的整个项目没有关闭...

一个常见的原因是,当你宣布一个JFrame你应该调用JFrame的这种方法,使其关闭当你按下 'X' 按钮:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);