`
b_l_east
  • 浏览: 639260 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java Swing 阻止窗口关闭

 
阅读更多

Java Swing 的窗口中,使用addWindowListener()添加窗口事件监听器,仅仅是得到窗口事件的通知,并不能阻止窗口的动作(如隐藏),要想阻止窗口的默认动作,可以使用如下方式:

 

public class AFrame extends JFrame{
	public AFrame() {
		this.setSize(400, 300);
		this.setVisible(true);
		
		//激活窗口事件
		this.enableEvents(AWTEvent.WINDOW_EVENT_MASK);
	}

	//重写这个方法
	@Override
	protected void processWindowEvent(WindowEvent e) {
		if (e.getID() == WindowEvent.WINDOW_CLOSING)
			return; //直接返回,阻止默认动作,阻止窗口关闭
		super.processWindowEvent(e); //该语句会执行窗口事件的默认动作(如:隐藏)
	}
	
	public static void main(String[] args) {
		new AFrame();
	}
}

 

----OK----

分享到:
评论
1 楼 myfreejava 2012-05-18  
也可使用 setDefaultCloseOperation 设置值为 0(DO_NOTHING_ON_CLOSE),以支持事件监听器阻止窗口关闭动作,而不覆盖父类方法(个人认为,覆盖总是要谨慎的,呵呵)。

如果总不需要执行默认动作,则可不记原默认值,而在初始化窗口时,直接设值0;否则可用变量记住原默认值,有必要时,可监听 defaultCloseOperation 属性改变事件,避免其它程序再次更改该值后,导致默认动作不一致的情况发生,处理方式很多。

不恢复默认值也可以,可直接调用 setVisible(false)、dispose()、System.exit(0) 等方法实现默认动作。

代码如下:

public class AFrame extends JFrame{
    public AFrame() {
        this.setSize(400, 300);  
        this.setVisible(true);

        addWindowListener(new WindowAdapter() {
            private int oldValue; // 记忆原默认值
            public void windowClosing(WindowEvent evt) {
                if (notClose) { // 不能关闭时
                    if (getDefaultCloseOperation() != 0) {
                    	oldValue = getDefaultCloseOperation();
                        setDefaultCloseOperation(0);
                    }
                    // 提示不能关闭
                } else { // 恢复默认动作
                    if (oldValue != 0 && getDefaultCloseOperation() == 0) setDefaultCloseOperation(oldValue);
                }
            }
        });
    }

    public static void main(String[] args) {  
        new AFrame();  
    }
} 

相关推荐

    (java)Swing中弹出对话框的几种方式

    这些对话框均为模式对话框,意味着它们会阻止用户与主窗口的其他部分互动,直到对话框被关闭。 ### ConfirmDialog——确认对话框 确认对话框用于向用户提出问题,并要求用户通过点击"Yes"或"No"按钮进行确认。在...

    JavaSwing示例

    在“JavaSwing示例”这个主题中,我们将深入探讨Swing组件的使用以及它们在实际应用中的表现。 Swing 提供了大量的组件,如按钮(JButton)、文本框(JTextField)、标签(JLabel)、复选框(JCheckBox)、单选按钮...

    Java 精通SWING教材 电子书

    模态对话框会阻止用户与对话框之外的组件进行交互,直到对话框关闭;而非模态对话框允许用户同时操作对话框和其他窗口。 9. **Swing工具包和实用类**: Swing包含一些有用的工具包,如SwingUtilities类,用于线程...

    java swing界面教程

    模态对话框会阻止用户与父窗口进行交互,直到对话框关闭;非模态对话框则允许同时进行多任务。 5. **菜单和菜单栏**:JMenu、JMenuBar、JMenuItem等类用于创建下拉菜单和菜单栏,这在桌面应用程序中非常常见,便于...

    Java swing学习课件

    **模式对话框**与**非模式对话框**的区别在于,模式对话框会阻止用户与主窗口或其他窗口的交互,直到对话框被关闭;而非模式对话框允许用户在对话框打开时继续与应用程序的其他部分交互。 通过这些知识点的学习,...

    java2 Swing源码

    6. **模态与非模态对话框**:Swing提供了JOptionPane、JDialog和JOptionPane等类来创建对话框,模态对话框会阻止用户与父窗口的交互,直到对话框关闭;非模态对话框则允许用户同时与多个窗口互动。 7. **Swing小...

    Swing基础知识

    - JDialog可以创建对话框,模态对话框会阻止用户与对话框之外的任何组件进行交互,直到对话框关闭;非模态对话框则不会。 5. **外观和主题**: - Swing允许改变组件的外观,通过LookAndFeel类可以设置不同的UI...

    第9章Java-Swing图形用户界面-Java面向对象程序设计教程-微课视频-程杰-清华大学出版社.pptx

    Java Swing是Java编程语言中用于构建图形用户界面(GUI)的库,它是Java AWT(Abstract Window Toolkit)的扩展,提供了更多功能和更好的平台独立性。本章主要讲解了使用Java Swing创建图形用户界面的基本概念和技术...

    swing中自定义对话框的几种实际用法

    模态对话框会阻止用户对父窗口的操作,直到对话框被关闭;而非模态对话框则允许用户同时与对话框和父窗口交互。在创建JDialog时,可以通过`ModalityType`参数设置对话框的模态类型。 四、自定义对话框的布局管理 ...

    swing弹出框

    Swing是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分。在Swing中,弹出框是用于与用户交互的重要组件,它们可以显示警告、确认信息或者请求用户的输入。Swing提供了...

    java弹出模式窗口

    1. **模态对话框**:模态对话框是指在打开后会阻止用户与应用程序的其他部分交互,直到该对话框被关闭为止。这种类型的对话框常用于需要用户完成某些操作或做出选择的场景。 2. **Swing组件**:Swing是Java中的一...

    关闭窗口前提示

    如果用户选择“取消”,则阻止窗口关闭;如果选择“确定”,则允许窗口关闭。 对于C#的Windows Forms或WPF应用,可以使用`FormClosing`事件并自定义`CancelEventArgs`的`Cancel`属性来达到相同的效果。在事件处理...

    java 自定义JDialog实现模态窗口

    模态对话框(Modal Dialog)是一种特殊的对话框,它会阻止用户与对话框背后的父窗口进行交互,直到该对话框被关闭。这在需要用户确认信息或输入数据时非常有用。 要创建一个自定义模态`JDialog`,我们需要以下步骤...

    javaGUI编程实例

    模态对话框会阻止用户与对话框之外的任何其他窗口进行交互,直到该对话框被关闭;而非模态对话框则允许用户同时与对话框和其他窗口进行操作。 在"fdialog"这个实例中,我们可能会看到如何创建和使用`JDialog`。首先...

    基于Java语言的控制窗口.zip

    14. **模态和非模态对话框**:在JavaFX中,Stage类可以创建模态和非模态对话框,模态对话框会阻止用户与父窗口进行交互,直到对话框关闭。 15. **JavaFX FXML**:FXML是一种XML格式,用于声明式地定义UI布局,与MVC...

    Java cs frame弹窗控件

    首先,`frame`在Java Swing中指的是JFrame类,它是顶级容器,用于创建应用程序的主要窗口。JFrame是所有其他组件的容器,可以添加菜单栏、按钮、文本框等元素。创建一个JFrame对象,并调用setVisible(true)方法来...

    java swing标准对话框具体实现

    对话框是非模态和模态两种,模态对话框会阻止用户与对话框背后的窗口进行交互,直到对话框关闭。 `JOptionPane` 是Swing提供的一种方便的类,用于创建标准对话框。在提供的代码示例中,我们看到了如何创建一个简单...

    Java应用程序设计接口

    模态对话框(Modal Dialog)会阻止用户对父窗口的操作,直到对话框关闭。 6. **Swing组件增强**:Swing的组件比AWT更加丰富和强大,比如JButton支持图标、工具提示和不同状态下的外观。JLabel不仅可以显示文本,还...

    JAVA GUI界面设计教程

    6. **模态和非模态对话框**:在GUI应用中,模态对话框会阻止用户与主窗口的交互,直到对话框关闭;而非模态对话框则允许用户同时操作多个窗口。JOptionPane和JDialog类在Swing中用于创建对话框,而JavaFX中的Stage类...

    Java程序之打地鼠

    ` 设置窗口关闭时退出整个应用程序。 6. **事件处理**:虽然示例中没有提及,但实际的打地鼠游戏会包含鼠标点击事件,当用户点击地鼠时,需要有响应机制来判断是否击中。这通常通过实现`MouseListener`或`...

Global site tag (gtag.js) - Google Analytics