JDialog关闭按钮事件

DSP*_*DSP 6 java swing jdialog

对于我的习惯JDialog

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
Run Code Online (Sandbox Code Playgroud)

已经设置好了。

上有一个按钮JDialog。根据条件,它调用dialog.dispose().

这两个操作都会触发windowClosed事件。但我想确定它到达那里是因为单击了关闭按钮或因为调用了 dispose 方法。

Joe*_*roo 5

添加一个WindowListenerJDialog,并windowClosed在关闭时设置一个布尔值或其他东西。还有一个buttonClicked布尔值,如果他们单击按钮,则为 true,如果他们单击窗口顶部的退出按钮,则为 false。

boolean closed;
boolean buttonClicked;
JButton exitbutton;
JDialog dialog;
...
public void actionPerformed(ActionEvent arg0) {
    buttonClicked = true;
    dialog.dispose();
}
...
dialog.addWindowListener(new WindowListener() {

                public void windowActivated(WindowEvent arg0) {
                    // Do nothing
                }
                public void windowClosed(WindowEvent arg0) {
                    closed = true;
                    if(buttonClicked) {
                    //They cliked the button to close it.
                    } else {
                    // They didn't click the button, they clicked exit in the top right corner of screen.
                    }
                }
                public void windowClosing(WindowEvent arg0) {
                    // Do nothing
                }
                public void windowDeactivated(WindowEvent arg0) {
                    // Do nothing
                }
                public void windowDeiconified(WindowEvent arg0) {
                    // Do nothing
                }
                public void windowIconified(WindowEvent arg0) {
                    // Do nothing
                }
                public void windowOpened(WindowEvent arg0) {
                    // Do nothing
                }

            });
Run Code Online (Sandbox Code Playgroud)