`
xxqn
  • 浏览: 74423 次
  • 性别: 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);
		}
	}

相关推荐

    java 自定义JDialog实现模态窗口

    总之,通过继承`JDialog`并自定义布局、组件和事件处理,我们可以创建复杂且功能丰富的模态对话框。这种方法在Java桌面应用程序中非常常见,特别是在需要用户输入或确认信息的情景下。熟练掌握这一技术,能够提升你...

    基于jquery的 对话框插件jDialog

    `jQuery`是一款轻量级的JavaScript库,它简化了DOM操作、事件处理、动画效果以及Ajax交互。jDialog充分利用jQuery的优势,通过简洁的API,让开发者能够快速地构建对话框。 2. **jDialog功能** - **多种类型**:...

    jquery.jDialog

    5. **事件处理**:提供丰富的事件回调,如打开、关闭、拖动等,方便在特定时刻执行相应的操作。 6. **可配置选项**:包括但不限于宽度、高度、位置、背景透明度、是否可关闭等,开发者可根据需求调整。 ### 二、...

    JFrame实现JDialog的效果,实现模式窗口

    3. **设置关闭操作**:通过`setDefaultCloseOperation()`方法,我们可以定义当用户点击窗口关闭按钮时的处理方式,比如`JFrame.DO_NOTHING_ON_CLOSE`,然后添加监听器来处理关闭事件。 4. **设置模态行为**:虽然`...

    JAVA初级编码——继承JDialog, 利用JTextArea显示文档中的内容

    6. 实现按钮的事件监听,当点击关闭按钮时,调用JDialog的`dispose()`方法来关闭对话框。 在"动态窗口生成和显示文档"这个示例中,开发者很可能会演示如何通过编程动态地生成这样的对话框,并将文档内容实时加载到...

    jquery.jdialog.1.1_1

    3. **功能全面**:除了基本的显示和关闭对话框,还提供了动画效果、拖动功能、自定义事件处理等功能,使得对话框不仅具有基本的提示功能,还能实现更复杂的交互。 4. **兼容性**:jQuery.jDialog对各种浏览器有着...

    简单的jQuery浮动窗口插件jDialog.zip

    特色介绍 可修改CSS来统一定制UI; ... 一个页面同时只能显示一个窗口; 窗口显示需要指定一个页面上的对象做为窗口显示做置定位,这样窗口会出现在哪个东西的下面,就像下拉列表一样.... 标签:jDialog

    jDialog是一款轻量级的jQuery模态对话框插件

    - `closeOnEsc`:是否允许通过按ESC键关闭对话框。 - `autoOpen`:是否在创建后立即打开对话框。 - `modal`:是否创建模态对话框,即阻止用户与背景交互。 ### 4. 扩展与定制 除了基本功能外,jDialog还允许开发者...

    比较全面的JDialog 和 JOptionPane的demo

    模态对话框会阻止用户与对话框之外的任何其他窗口进行交互,直到对话框被关闭;而非模态对话框则不会限制用户的操作。 创建`JDialog`的基本步骤包括: 1. 创建一个`JDialog`实例,传入`null`表示创建一个无父窗口的...

    JDialog

    JDialogJDialog

    java swing-JDialog的使用

    JDialog 是 Java Swing 库提供的一个用于创建对话框窗口的组件,可以在应用程序中显示模态或非模态的自定义对话框。

    jQuery多种类型自定义对话框插件jDialog源码.zip

    4. **动态行为**:jDialog支持动态打开、关闭、动画效果,以及在页面加载后自动显示对话框。 5. **拖拽功能**:对话框可以被拖动到屏幕上的任意位置,增加用户操作的灵活性。 三、jDialog源码解析 jDialog的源码...

    多种类型自定义对话框插件jDialog.zip

    `jDialog`插件就是一个这样的工具,专门用于创建基于jQuery的多种类型的自定义对话框,它具有轻量级、易用且功能丰富的特点。 首先,让我们深入了解一下jQuery。jQuery是一个广泛使用的JavaScript库,它的主要目标...

    blackfox-JDialog-master_java_

    在Java编程语言中,`JDialog`是Java Swing库中的一个关键组件,它用于创建对话框,这是一种特殊的窗口,通常用来向用户展示信息或者获取用户的输入。`JDialog`类是`java.awt.Dialog`的子类,专为Swing应用程序设计,...

    jpopupwin 继jdialog之后改进版

    【标题】"jpopupwin 继jdialog之后改进版"所涉及的知识点主要集中在Java Swing组件的扩展以及JavaScript库的应用上。JPopupWin是针对Java Swing中的JDialog组件进行优化和增强的一个版本,旨在提供更美观、功能更...

    Java Swing中JDialog实现用户登陆UI示例

    JDialog 可以设置为模态或非模态,模态对话框会阻塞当前线程,直到用户关闭对话框,而非模态对话框则不会阻塞当前线程。 JDialog 的基本使用 在 Java Swing 中,使用 JDialog 构建用户登录 UI 需要创建一个 ...

    详解Java编程JDialog窗体的用法及实例

    然后,我们设置了 JFrame 窗体的标题、大小和关闭模式。 JDialog 窗体是一个非常有用的组件,在 Java 编程中有广泛的应用。通过掌握 JDialog 窗体的用法和实例,我们可以更好地实现各种对话框的功能。

    Scrollable JDialog Example:可滚动 JDialog 示例-开源

    可滚动 JDialog 示例。 许可证: ---------- 本项目中提供的所有程序/软件均在 APACHE LICENSE, VERSION 2.0 下发布。 可以在此处找到许可证详细信息:https://www.apache.org/licenses/LICENSE-2.0。 本许可的某些...

    JDialog—一个非常优秀的的开源JS弹出框

    1. 包括锁屏对象JDialog.lock, 提示工具 JDialog.tip, 确认框 JDialog.confirm 弹出窗口 JDialog.win 比artDialog功能更强大,使用更方便。 2. JWindow 是一个做WebOS系统的必备工具,使用Jwindow搭建WebOs系统能...

Global site tag (gtag.js) - Google Analytics