JFrame catch dispose事件

时间:2010-11-11 13:17:14

标签: java jframe

我有一个Java项目 我有一个JFrame,附带一个处理程序,如此

frame.addWindowListener(new WindowAdapter() {

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

            }
        });

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

2 个答案:

答案 0 :(得分:4)

  

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

查看Closing an Application解决方案以解决此问题。您真正需要做的就是在按钮上添加“ExitAction”,但如果需要,可以使用整个方法。

答案 1 :(得分:1)

我花了几天时间寻找与OP相同问题的解决方案。

它隐藏在视线之内。 如果通过 X 按钮关闭框架或调用windowClosed()方法,则会调用myFrame.dispose()方法。

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