刚刚看到了Swing组件这里,创建了JFrame一个小窗口,然后习惯点击关闭发现能够关闭掉,改进的GUI就是不一样。后来看了JDK文档才发现,这个窗口并没有关闭只是隐藏了,内存中依然存在,必须通过windowClosing事件处理调用dispose才能关闭,或者设置JFram为JFrame.EXIT_ON_CLOSE,点击时时就会关闭。
回想起之前关于窗口关闭的方法似乎只记得了
f.addWindowListener(new WindowAdapter(){
public void windowClosing()
{
System.exit(0);
}
这个方法。查了查关闭窗口方法:
java中如何关闭Frame窗口?
分三种情况来说明:
1. 用户类继承自Frame;
2. Frame对象作为用户类的数据成员;
3. 用户类继承自WindowAdapter.
1. 用户类继承自Frame:
代码如下:
import java.awt.*;
import java.awt.event.*;
public class MyFrame extends Frame
{
public void display()
{
this.setTitle("MyFrame");
this.setSize(480,200);
this.setLocation (200,400);
this.setBackground (Color.lightGray);
this.setVisible(true);
}
public static void main (String args[])
{
MyFrame f = new MyFrame();
f.addWindowListener(new WindowAdapter() //为了关闭窗口
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
f.display();
}
}
2. Frame对象作为用户类的数据成员:
代码如下:
import java.awt.*;
import java.awt.event.*;
public class MyFrame2
{
Frame f = new Frame();
MyFrame2()
{
f.addWindowListener(new WindowAdapter() //为了关闭窗口
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public void display()
{
f.setTitle("MyFrame");
f.setSize(480,200);
f.setLocation (200,400);
f.setBackground (Color.lightGray);
f.setVisible(true);
}
public static void main (String args[])
{
new MyFrame2().display();
}
}
3. 用户类继承自WindowAdapter,而窗口对象Frame作为用户类的数据成员.
代码如下:
import java.awt.*;
import java.awt.event.*;
public class MyFrame3 extends WindowAdapter
{
Frame f = new Frame();
public void display()
{
f.setTitle("MyFrame");
f.setSize(480,200);
f.setLocation (200,400);
f.setBackground (Color.lightGray);
f.addWindowListener (this); //窗体f--注册窗体事件监听器
f.setVisible(true);
}
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
public static void main (String args[])
{
new MyFrame3().display();
}
}
原文链接点击打开链接