Java Swing为EXIT_ON_CLOSE添加动作侦听器
我有一个简单的GUI:
public class MyGUI extends JFrame{ public MyGUI(){ run(); } void run(){ setSize(100, 100); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// maybe an action listener here } }
我想打印出这条消息:
System.out.println("Closed");
当GUI关闭时(按下X时)。 我怎样才能做到这一点?
尝试这个。
addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.out.println("Closed"); e.getWindow().dispose(); } });
在JFrame的构造函数中编写此代码:
this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); this.addWindowListener(new java.awt.event.WindowAdapter() { @Override public void windowClosing(java.awt.event.WindowEvent e) { System.out.println("Uncomment following to open another window!"); //MainPage m = new MainPage(); //m.setVisible(true); e.getWindow().dispose(); System.out.println("JFrame Closed!"); } });
另一种可能是从Window
类重写dispose()
。 这样可以减少发送的消息数量,如果默认关闭操作设置为DISPOSE_ON_CLOSE
,也可以使用。
具体地说这意味着添加
@Override public void dispose() { System.out.println("Closed"); super.dispose(); }
到你的class级MyGUI
。
注意:不要忘记调用super.dispose()
因为这会释放屏幕资源!