`
xxqn
  • 浏览: 75733 次
  • 性别: Icon_minigender_1
  • 来自: 广东韶关
社区版块
存档分类
最新评论

捕捉JDialog的关闭事件

阅读更多
JDialog的关闭事件是什么?
问了几个群,网上也找了好久都没有正确答案,还是靠自己吧。下面是我的测试代码:
	public class EditJDialog extends javax.swing.JDialog implements WindowListener{
		

		public EditJDialog(Frame owner, boolean modal) {
			super(owner, modal);

			setSize(800, 600);
			setVisible(true);
			//setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
			this.addWindowListener((WindowListener) this);
		}

		@Override
		public void windowActivated(WindowEvent e) {
			System.out.println(0);
			
		}

		@Override
		public void windowClosed(WindowEvent e) {
			// TODO Auto-generated method stub
			System.out.println(1);
		}

		@Override
		public void windowClosing(WindowEvent e) {
			// TODO Auto-generated method stub
			System.out.println(2);
		}

		@Override
		public void windowDeactivated(WindowEvent e) {
			System.out.println(3);
		}

		@Override
		public void windowDeiconified(WindowEvent e) {
			// TODO Auto-generated method stub
			System.out.println(4);
		}

		@Override
		public void windowIconified(WindowEvent e) {
			// TODO Auto-generated method stub
			System.out.println(5);
		}

		@Override
		public void windowOpened(WindowEvent e) {
			// TODO Auto-generated method stub
			System.out.println(6);
		}


	}

点击关闭按钮,结果是3。可以推定对应的事件是windowDeactivated,而不是网上所说的windowClosing。
哪位给个评论,为何网上说的与我的实验会不同?
分享到:
评论
4 楼 shareal 2013-11-07  
覆写processWindowEvent之后,在里面将窗口dispose,可以不调用this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);

从调用顺序上来说EventQueue先调用dispatchEventImpl->processEvent,再调用窗口注册的事件
比如如下情况,窗口已经关闭了。
        this.addWindowListener(new WindowAdapter()
        {
            @Override
            public void windowDeactivated(WindowEvent e)
            {
                 // do something               
            }
        });
    }

所以需要优先覆写processEvent
3 楼 ErinToJerry 2013-04-22  
我试了一下,是windowClosing啊。。。。而且windowDeactivated不仅仅会在窗口关闭的时候被调用,还有很多种情况。。。
2 楼 hilly 2010-06-30  
这个问题你可以测试一下:
当继承JFrame类,关闭时的事件,应该是WindowEvent.WINDOW_CLOSING
//override JFrame 的方法
	protected void processWindowEvent(WindowEvent e) {
		if (e.getID() == WindowEvent.WINDOW_CLOSING) {
			if (JOptionPane.showConfirmDialog(this, "确实要关闭?", "确认", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { 
				System.exit(0);
			} else {
			}
		} else {
			super.processWindowEvent(e);
		}
	}

相关推荐

    如果右键单机文本域会弹出美观的日历控件

    - 通过 `MouseListener` 的实现,可以捕捉到用户在日历上的点击事件。例如,当用户点击某一天的日期时,可能需要更新选中状态并关闭日历对话框。 8. **SwingUtilities.invokeLater()**: - 为了确保界面的正确...

    拖动窗体功能(方法类)

    为了实现这个功能,我们需要创建一个自定义的窗口类,继承自Java Swing的`JFrame`或`JDialog`。然后,我们需要监听鼠标事件,特别是`MouseMotionListener`接口中的`mouseDragged`事件,这是实现拖动的关键。 下面是...

    java词汇解释

    捕捉,是Java异常处理的一部分,用于捕获Try块中抛出的异常。 #### Finally 最后,是Java异常处理的一部分,无论是否发生异常,Finally块中的代码都会被执行。 #### NumberFormatException 数字格式异常,当尝试将...

    基于Andorid的音乐播放器项目改进版本设计.zip

    基于Andorid的音乐播放器项目改进版本设计实现源码,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。

    uniapp-machine-learning-from-scratch-05.rar

    uniapp-machine-learning-from-scratch-05.rar

    game_patch_1.30.21.13250.pak

    game_patch_1.30.21.13250.pak

    【毕业设计-java】springboot-vue计算机学院校友网源码(完整前后端+mysql+说明文档+LunW).zip

    【毕业设计-java】springboot-vue计算机学院校友网源码(完整前后端+mysql+说明文档+LunW).zip

    机器学习-特征工程算法

    特征变换 特征选择

    吸烟数据集 991张原始图片,平均识别率在88.3% coco json格式标注

    吸烟数据集 991张原始图片,平均识别率在88.3% coco json格式标注

    c++万能头文件picture.h

    c++万能头文件picture.h

    spaceX Ship Flight Test 8

    spaceX 动力学分析

    数据科学_Python手册_在线学习资源_教育辅助_1741398259.zip

    python教程学习

    Uniapp 跨平台开发框架的学习资源汇总与应用指导

    内容概要:本文详细整理了与uniapp有关的一系列学习资源及开发工具。首先对官方文档与教程进行梳理,这是学习uni-app的基础部分,涵盖从基本概念到具体开发指引的全方位资料。接着详细介绍了一款专为uni-app打造的高效开发工具HBuilderX的功能特点及其使用指南,并提到了CLI命令行工具可用于完成开发过程中的常规操作任务。同时,指出uni-app所处的强大社区氛围,无论是社区还是论坛都为开发者解决了实际遇到的问题并分享了大量有价值的经验;还提及多个专门为uni-app量身定制的UI框架和丰富的组件库,进一步提高了开发的便捷性和灵活性;最后列举了几类学习资源,诸如视频教程、博客与文章还有相关书籍均能助力新手成长为熟练工。所有这些资源都将有助于深入学习和理解uni-app这个跨平台框架的相关知识点,进而开发出优秀的多平台应用程序。 适用人群:有意进入跨平台移动应用开发领域的初学者,以及希望提升开发技能的专业人士。 使用场景及目标:为想要深入了解或者开始使用uni-app框架进行开发的人群提供完整路径指导;为目标受众建立起一套完整的学习路径来降低入门难度并提升实际操作能力。

    AI Agent 行业研究报告.pdf

    AI Agent 行业研究报告.pdf

    kibana-7.10.2 docker镜像压缩包,百度网盘

    请到网盘中自取压缩包,此包为kibana-7.10.2 镜像压缩包,是通过现有镜像导出来的,主要是为了解决有些机器无法连接外网,导致无法下载镜像 加载镜像: docker load -i kibana-7.10.2.tar 查看镜像: docker images 备注:elk此镜像配套资源,相同版本的elasticsearch和logstash,请在我的资源中搜索其他镜像

    图解AUTOSAR-CP-TcpIp逻辑图打包

    图解AUTOSAR-CP-TcpIp逻辑图打包

    【毕业设计-java】springboot-vue交友网站平台实现源码(完整前后端+mysql+说明文档+LunW).zip

    【毕业设计-java】springboot-vue交友网站平台实现源码(完整前后端+mysql+说明文档+LunW).zip

    海康相机平场矫正对比图

    海康相机平场矫正对比图

    数据科学_Python基础_数据分析_学习资源.zip

    python教程学习

    基于51单片机的蓝牙家电开关控制的设计与实现

    【论文+PPT+代码+开题+任务书】手机APP遥控的相关测试主要完成设计当中按键控制对应继电器是否正确打开以及关上,可以通过观察按下按键时继电器想匹配的LED是否点亮来进行验证。 进入手机APP后,根据APP中的按键分别控制不同的继电器,继电器1这个按键控制对应1号继电器的开启和关闭,手机蓝牙按下按键由OFF转变为ON那么电控制器件就可以变化一次,1号指示灯就可以由暗变亮了,再次按下手机蓝牙按键由ON转变为OFF电控制器件又变化一次,1号指示灯就可以由亮变暗。 如果点击继电器2则控制对应2号继电器的开启和关闭,手机蓝牙按下按键由OFF转变为ON那么电控制器件就可以变化一次,2号指示灯就可以由暗变亮了,再次按下手机蓝牙按键由ON转变为OFF电控制器件又变化一次,2号指示灯就可以由亮变暗。 如果点击继电器3则控制对应3号继电器的开启和关闭,手机蓝牙按下按键由OFF转变为ON那么电控制器件就可以变化一次,3号指示灯就可以由暗变亮了,再次按下手机蓝牙按键由ON转变为OFF电控制器件又变化一次,3号指示灯就可以由亮变暗。 如果点击继电器4则控制对应4号继电器的开启和关闭

Global site tag (gtag.js) - Google Analytics