【问题标题】:JFrame catch dispose eventJFrame 捕获处理事件
【发布时间】:2010-11-11 13:17:14
【问题描述】:

我有一个 Java 项目。
我有一个带有处理程序的 JFrame,就像这样

frame.addWindowListener(new WindowAdapter() {

            public void windowClosing(WindowEvent evt) {
                this.setEnabled(true);

            }
        });

但是,在那个框架上,我还有一个关闭按钮(以使其更加用户友好),并且那个“关闭”按钮调用框架处置方法。现在,当我通过单击右上角的小 x 按钮关闭框架时,将调用 WindowListener。但是当我调用 dispose 方法时,该事件不会触发。
我应该调用一些其他方法来关闭,所以 WindowListener 触发,或者可能实现另一个侦听器?

【问题讨论】:

    标签: java jframe


    【解决方案1】:

    你应该看看WindowListener interface

    windowClosing():当用户试图从窗口的系统菜单关闭窗口时调用。 (窗口 X 按钮)

    windowClosed():在窗口因调用 dispose 而关闭时调用。

    所以,windowClosing()只有在用户点击窗口的X按钮时才被调用windowClosed() 是在调用dispose() 事件时调用的,所以它总是被调用:

    • 如果用户使用窗口 X 按钮关闭框架
    • 如果框架被代码以编程方式关闭
        JFrame myFrame = new JFrame();
        myFrame.addWindowListener(new java.awt.event.WindowAdapter() {
            @Override
            public void windowClosed(java.awt.event.WindowEvent windowEvent) {
                // your code
            }
        });
    

    来源:https://alvinalexander.com/blog/post/jfc-swing/closing-your-java-swing-application-when-user-presses-close-but

    【讨论】:

      【解决方案2】:

      在那个框架上,我还有一个关闭按钮(使其更加用户友好)

      查看Closing an Application 解决方案来处理此问题。您真正需要做的就是将“ExitAction”添加到您的按钮,但您可以根据需要使用整个方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-07-26
        • 2013-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-23
        • 1970-01-01
        相关资源
        最近更新 更多