Java中窗口关闭事件。

问题描述

Java中窗口关闭事件。

程序代码如下:
package com.packageTemp;

import java.awt.event.*;

import javax.swing.*;

import java.awt.*;

public class MouseAdapterTest {

JFrame f=null;
JButton btn=null;

public static void main(String[] args) {

  new MouseAdapterTest();
}
//构造函数
public MouseAdapterTest()
{

    f=new JFrame("Test");
    btn=new JButton("按钮1");
    //添加监听事件
    btn.addActionListener(new ActionListener(){

        @Override
        public void actionPerformed(ActionEvent e) {

            System.out.println("action ok");
        }

    });
    btn.addMouseListener(new MouseAdapter(){
        int count=1;
        public void mouseEntered(MouseEvent e){

            System.out.println("鼠标进入了按钮区域"+count++);
        }
        public void mouseExited(MouseEvent e) {
            System.out.println("鼠标离开了按钮区域"+count++);

        }

    });

    f.add(btn);
    f.setBounds(100, 200, 500, 400);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    此行是重点
    f.setVisible(true);
}

}

如代码所示:如果我写上f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ,则点击右上角的X时,可以关闭窗口,并且程序停止运行。

但是我好奇的是,为什么我没有写窗体监听事件,即WindowListener,为什么点击X,图形化界面依旧可以X掉。

求大神指点

解决方案

首先点击窗口的关闭按钮X会触发点击X按钮的点击事件或者也称窗口关闭按钮事件,JFrame系统中原有的程序肯定也类似于注册了窗口关闭监听事件,在监听事件的处理程序中会依据你的配置(类似你的f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);)进行处理,也就是关闭了程序。当然你也可以注册类似的事件监听程序(窗口关闭事件)。你也可以在你注册的监听程序中处理点击X按钮操作,但处理完之后也还是会运行JFrame系统中原有的X按钮监听程序,除非你在你注册的监听程序中直接结束了程序的运行。

解决方案二:

jframe是自带关闭功能的,,,

解决方案三:

例如;我启动一个frame1后,通过事件响应启动了第二个frame2,当我点击窗口上的X按钮关闭,只退出第二个frame,第一frame不关闭!
默认都是使用EXIT_ON_CLOSE,改成DISPOSE_ON_CLOSE即可

++++++++++++++&#43......
答案就在这里:java窗口关闭事件

解决方案四:

明白了,是IDE自带功能么?

解决方案五:

默认你点右上角的X是隐藏了该窗口,你想要点X立即退出的话,调用

 JFrame frame = new yourFrame();
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     //这一行就是将窗体修改为点击X立即退出程序的语句
 frame.setVisible(true);

解决方案六:

JFrame不用设置,自带关闭功能。

解决方案七:

JFrame不用设置,已经实现了关闭功能。

解决方案八:

Frame 就要自己实现

解决方案九:

希望能帮助你解除疑惑

时间: 2024-09-29 05:38:49

Java中窗口关闭事件。的相关文章

JS针对浏览器窗口关闭事件的监听方法集锦_javascript技巧

本文实例总结了JS针对浏览器窗口关闭事件的监听方法.分享给大家供大家参考,具体如下: 方式一:(适用于IE浏览器,而且刷新不提示,只在点击浏览器关闭按钮的时候提示) <script type="text/javascript"> window.onbeforeunload=onclose; function onclose() { if(event.clientX>document.body.clientWidth&&event.clientY<

JavaScript 捕获窗口关闭事件_javascript技巧

1.用javascript重新定义 window.onbeforeunload() 事件 在javascript里定义一个函数即可 function window.onbeforeunload() { alert("关闭窗口")} alert()事件将会在关闭窗口前执行,你也可以用户决定是否关闭窗口 function window.onbeforeunload() { if (event.clientX>document.body.clientWidth && e

捕捉窗口关闭事件(转贴)

public class whoisresult : System.Windows.Forms.Form{.............................private bool TangSeng = false;}private void InitializeComponent(){.............................this.Closing += new CancelEventHandler(this.whoisresult_Cancel);}        

在父窗口中得知window.open()出的子窗口关闭事件的方法

<HTML> <BODY> <P> </P> <form name=fm_Info> <input type=text name=txtValue> </form> <script language=javascript> var timer var winOpen function IfWindowClosed() { if (winOpen.closed == true) { document.fm_Inf

如何在父窗口中得知window.open()出的子窗口关闭事件_javascript技巧

复制代码 代码如下: <HTML> <BODY> <P> </P> <form name=fm_Info> <input type=text name=txtValue> </form> <script language=javascript> var timer var winOpen function IfWindowClosed() { if (winOpen.closed == true) { docu

一种在父窗口中得知 window.open()出的子窗口关闭事件的方法(定时器实现)

parent.htm :<br><br><HTML><BODY><br><P> </P><br><form name=fm_Info><br><input type=text name=txtValue><br></form><br><script language=javascript><br>var timer&

java 中IO关闭流

问题描述 public class Test_01 {public static void main(String[] args) {FileInputStream fis=null;try { fis=new FileInputStream("D:\workspace\TestIO\src\TestTO_01\TestFile.java"); byte[] buf=new byte[1024]; int c=0; try {while((c=fis.read(buf))>=0)

jsp页面中窗口关闭,退出的方式分享_JSP编程

1.采用javascript 复制代码 代码如下: <input type="button" value="关闭窗口" onclick="javascript:window.close()">   或者: 复制代码 代码如下: <input type="button" value="关闭窗口" onclick="window.close()">   <inp

J2EE中窗口关闭疑惑

问题描述 packagecom.trackwar;importjava.awt.*;importjava.awt.event.*;publicclassTrackClientextendsFrame{publicvoidpaint(Graphicsg){Colorc=g.getColor();g.setColor(Color.RED);g.fillOval(50,50,30,30);}publicvoidlauchFrame(){this.setLocation(400,300);this.se