我试图看看我的窗口监听器是否正常工作。我希望在我在windowClosed方法中调用dispose之前在控制台中打印出一条消息,但它不会打印任何内容。我不确定自己是否做错了 - 有没有办法检查?
public class MyClass extends JFrame {
. . .
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
System.out.println("I'm in the listener");
dispose();
}
});
. . .
}
答案 0 :(得分:4)
我想你想要windowClosing
,当用户试图关闭窗口时会调用它。在窗口被处理后,windowClosed
被称为,因此尝试从那里处理它是没有意义的。
答案 1 :(得分:4)
windowClosing
总是被解雇
使用时会触发windowClosed
:
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
但被覆盖的方法应该是这样的,
@Override
public void windowClosed(WindowEvent e) {
System.out.println("I'm in the listener");
System.exit(0);
}
});
这里不能使用dispose()
方法,因为在处理帧之后将调用此方法。
如果调用了dispose()
方法,那么这将使windowClosed()
方法无限执行。