温柔狠角色 2016-05-17 09:38 采纳率: 57.1%
浏览 6953
已采纳

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掉。

求大神指点

  • 写回答

9条回答 默认 最新

  • zhzhou8 2016-05-20 09:28
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

悬赏问题

  • ¥15 单通道放大电路的工作原理
  • ¥30 YOLO检测微调结果p为1
  • ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题