当前位置: 技术问答>java相关
类里重载了windowClosing这个函数为啥要加dispose这个方法???
来源: 互联网 发布时间:2017-04-23
本文导语: package testframe; /** * Title: * Description: * Copyright: Copyright (c) 2002 * Company: * @author unascribed * @version 1.0 */ //TestFrame.java import java.awt.*; import java.awt.event.*; public class TestFrame { public stati...
package testframe;
/**
*
*
*
*
* @author unascribed
* @version 1.0
*/
//TestFrame.java
import java.awt.*;
import java.awt.event.*;
public class TestFrame
{
public static void main(String args[])
{
new MyFrame();
}
}
class MyFrame extends Frame implements ActionListener
{
Button btn;
MyFrame()
{
super("我的窗口");
btn=new Button ("关闭");
setLayout(new FlowLayout());
add(btn);
btn.addActionListener(this);
addWindowListener(new closeWin());
setSize(300,200);
setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if (e.getActionCommand()=="关闭")
{
dispose();
System.exit(0);
}
}
}
class closeWin extends WindowAdapter
{
public void windowClosing(WindowEvent e) //重载了,
{
Frame frm=(Frame)(e.getSource());
frm.dispose(); //这里为什么要加这个方法,当我加了断点
System.exit(0); //显示,这里根本没有执行,那为什么还要
} //这个方法呢?
}
/**
*
Title:
*
Description:
*
Copyright: Copyright (c) 2002
*
Company:
* @author unascribed
* @version 1.0
*/
//TestFrame.java
import java.awt.*;
import java.awt.event.*;
public class TestFrame
{
public static void main(String args[])
{
new MyFrame();
}
}
class MyFrame extends Frame implements ActionListener
{
Button btn;
MyFrame()
{
super("我的窗口");
btn=new Button ("关闭");
setLayout(new FlowLayout());
add(btn);
btn.addActionListener(this);
addWindowListener(new closeWin());
setSize(300,200);
setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if (e.getActionCommand()=="关闭")
{
dispose();
System.exit(0);
}
}
}
class closeWin extends WindowAdapter
{
public void windowClosing(WindowEvent e) //重载了,
{
Frame frm=(Frame)(e.getSource());
frm.dispose(); //这里为什么要加这个方法,当我加了断点
System.exit(0); //显示,这里根本没有执行,那为什么还要
} //这个方法呢?
}
|
其实直接System.exit(0);就可以了
不过比较正规的方法还要加上
setVisible(false);
dispose();
System.exit(0);
不过比较正规的方法还要加上
setVisible(false);
dispose();
System.exit(0);
|
Frame.dispose()仅销毁窗体
System.exit(0)结束进程
WindowAdapter.windowClosing(WindowEvent e)
当窗口关闭(包括用窗口右上角的X)时会被调用。
在handsome1234 (我太菜了,) 的例子中,如果用btn关闭窗口,WindowAdapter.windowClosing(WindowEvent e)是不会执行到的,只有用窗口的X按钮关闭才会执行到。
System.exit(0)结束进程
WindowAdapter.windowClosing(WindowEvent e)
当窗口关闭(包括用窗口右上角的X)时会被调用。
在handsome1234 (我太菜了,) 的例子中,如果用btn关闭窗口,WindowAdapter.windowClosing(WindowEvent e)是不会执行到的,只有用窗口的X按钮关闭才会执行到。
|
调用dispose以执行windowClosed
|
dispose()方法是用来释放窗口资源的,窗口释放后程序还在继续运行,只不过看不到而已。
直到System.exit(0);运行后,程序才真正结束。
直到System.exit(0);运行后,程序才真正结束。