我已经设置了一个像这样的JFrame:
public class XFrame extends JFrame {
public XFrame() {
setSize(100, 100);
}
@Override
public void dispose() {
super.dispose();
System.out.println("Dispose get called");
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
XFrame f = new XFrame();
f.setTitle("Hello World");
//f.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
f.setVisible(true);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
我期待的是,当我按下关闭按钮[X]时,将调用dispose方法.但是,只有当DISPOSE_ON_CLOSE设置为DefaultCloseOperation(???)时才会出现这种情况.Java真的让我感到惊讶.如何实现在DefaultCloseOperation值(DISPOSE_ON_CLOSE和EXIT_ON_CLOSE)两种情况下都会调用的方法?
如果你这样做EXIT_ON_CLOSE的话,很少需要处理,因为当JVM退出时,所有资源都被"处理掉"了.我把"处理"放在引号中,因为在这种自动情况下,该dispose方法显然没有被调用.
请注意,Swing中的公共方法可供您调用,并非所有方法都必须由Swing的内部调用.例如,有setSize()和setLocation()和setBounds()方法-做前2呼叫后者,或者周围的其他方式?它没有定义,所以你不应该假设.
类似地,如果你想在框架关闭时做某事,那么确保它的方法是挂钩WindowListener到框架,并将你的结束动作放入windowClosing().
| 归档时间: |
|
| 查看次数: |
6116 次 |
| 最近记录: |