JFrame关闭问题????
package org.eclipsebook.ch06;
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Ch06_03 extends JFrame {
Panel p;
public Ch06_03(){
super( "Swing application ");
Container contentPane = getContentPane();
p = new Panel();
contentPane.add(p);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
final JFrame f = new Ch06_03();
f.setBounds(100, 100, 300, 300);
f.setVisible(true);
f.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});//上面的这种方式怎么还要来个WindowListener呢???
//与这个JFrame.EXIT_ON_CLOSE有什么不同么/这个没有加监听器的,
//(我试了试把那个监听器注释掉后,仍可用,就是按下关闭后反应慢些)以前没认真想过的。
}
}
class Panel extends JPanel{
Panel(){
setBackground(Color.white);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawString( "Hello from Eclipse ", 60, 100);
}
}
------解决方案--------------------看下兩個內存的使用
------解决方案--------------------去查一下java API吧!!
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
这个WindowAdapter中实现了windowClosing方法,也就是说在这个窗口将被关闭时,执行System.exit(0);
结束整个应用程序!
------解决方案--------------------JFrame.EXIT_ON_CLOSE的作用是当按下“X”时,是整个窗口关闭,这是JFrame的可选的默认行为,
但加了adapter之后,作用就是在closing事件的时候就退出,并不是在closed事件才退出
所以时间延长了是很正常的行为