java的Frame窗体如何设置鼠标点击关闭图标时关闭窗体

如题所述

每个AWT窗体的右上角都有三个图标,分别控制窗体的最小化、最大化和关闭。最小化和最大化图标的功能是内置的,无需编程实现。而当用户单击关闭图标时,AWT窗体无响应。用户如果要关闭AWT窗体,只能通过任务管理器结束java进程,这显然太麻烦了。因此,必须编程实现关闭图标的功能,而这需要通过捕获窗体事件来实现。

窗体事件是指示窗体状态改变的低级别事件。当打开、关闭、激活、停用、图标化或取消图标化窗体对象时,或者焦点转移到窗体内或移出窗体时,由窗体对象生成此事件。该事件被传递给每一个使用窗体的 addWindowListener 方法注册以接收窗体事件的 WindowListener对象。也就是说,当用户单击窗体的关闭图标时,将产生窗体事件(WindowEvent)。该事件由窗体监听器接口(WindowListener)负责捕获。

捕获窗体事件的步骤是:
(1) 让类实现窗体监听器接口,这将使得该类变成窗体事件监听器;
(2) 向类注册窗体事件监听器;
(3) 实现窗体事件监听器的所有方法。

源代码Calc.java可修改如下:
package calc;

import java.awt.*;
import java.awt.event.*;

public class Calc extends Frame implements WindowListener{

public Calc(){
super(“计算器”);
setSize(200,200);
addWindowListener(this);
}

// 用户单击窗体的关闭图标时调用本方法。
public void windowClosing(WindowEvent e) {
System.exit(0); //终止当前正在运行的 Java 虚拟机,退出系统。
}
public void windowClosed(WindowEvent e) {}

public void windowOpened(WindowEvent e) {}

public void windowIconified(WindowEvent e) {}

public void windowDeiconified(WindowEvent e) {}

public void windowActivated(WindowEvent e) {}

public void windowDeactivated(WindowEvent e) {}

public static void main(String args[]){
new Calc().setVisible(true);
}
}

运行结果:单击窗体的关闭图标,窗体关闭。这说明窗体已具备响应事件的能力。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-09-14
Java中Frame窗体的关闭按钮默认是不触发事件的,Java在设置之初将绑定事件的动作交由用户来实现,一个用户要想达到点击关闭按钮关闭窗体,则要在代码中添加实体窗口关闭的事件。
Frame实现点击按钮关闭窗体的事件代码如下:
addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent e)
{
System.exit(0);
}});
第2个回答  2010-07-23
如果是你自己建立的JFrame的话,可以给他加入一个监听事件

例如:

JFrame frame=new JFrame();
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});

这样,你点击关闭时就可以关闭JFrame了。
第3个回答  推荐于2017-11-23
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

这些问题在java doc上都写得很清楚的本回答被网友采纳
第4个回答  2015-06-08
JFrame frame=new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
这样就可以关闭窗体了
相似回答