主持人:请参阅此答案的评论:stackoverflow.com/a/16388697/1574975
我正在尝试检测用户何时使用带有GUI的客户端程序,这样当他们关闭JFrame时,例如通过Xing,我就可以关闭套接字连接。
但是当用户关闭JFrame时,我无法做任何事情。我被告知我需要将WindowListener与我的JFrame一起使用,但它似乎不起作用。我的类扩展了JFrame,这里是设置JFrame的构造函数的一部分:
this.setContentPane(pane);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
this.setVisible(true);
final JFrame thisFrame = this;
thisFrame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
System.out.println("User has closed window");
}
});
}
里面的println没有打印,这就是为什么我觉得它不起作用。我做得对吗还是我需要做一些额外的事情吗?
答案 0 :(得分:3)
windowClosed
将不会被调用,因为JVM已关闭以响应setDefaultCloseOperation
已设置为JFrame.EXIT_ON_CLOSE
。
改为使用windowClosing
或更改defaultCloseOperation