Java 带WindowsStateListener的JDialog
我试图捕获一个事件,即用户单击JDialog的“X”按钮,并且只有在用户确认后才关闭。下面是我正在做的工作的框架:Java 带WindowsStateListener的JDialog,java,jdialog,windowlistener,Java,Jdialog,Windowlistener,我试图捕获一个事件,即用户单击JDialog的“X”按钮,并且只有在用户确认后才关闭。下面是我正在做的工作的框架: public class MyDialog extends JDialog { public MyDialog(){ super(); setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); ......... } ......... }
public class MyDialog extends JDialog {
public MyDialog(){
super();
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
.........
}
.........
}
public class Waiter implements WindowStateListener{
@Override
public void windowStateChanged(WindowEvent event) {
System.out.println(event);
if (event.getNewState() == WindowEvent.WINDOW_CLOSING) {
if (shouldClose()) {
dialog.close();
}
}
}
}
MyDialog dialog = new MyDialog();
Waiter waiter = new Waiter();
dialog.addWindowStateListener(waiter);
您可以猜到,当我单击对话框的“X”时,我没有得到打印的消息,因为该方法从未调用过。我不确定问题出在哪里。是否要使用而不是WindowsStateListener
试试这个:
MyDialog dialog = new MyDialog();
dialog.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(final WindowEvent event) {
System.out.println(event);
if (shouldClose()) {
dialog.close();
}
}
});
您想使用而不是WindowsStateListener
试试这个:
MyDialog dialog = new MyDialog();
dialog.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(final WindowEvent event) {
System.out.println(event);
if (shouldClose()) {
dialog.close();
}
}
});