Java Swing在关闭时为退出添加操作侦听器
我有一个简单的GUI:Java Swing在关闭时为退出添加操作侦听器,java,swing,jframe,windowlistener,Java,Swing,Jframe,Windowlistener,我有一个简单的GUI: public class MyGUI extends JFrame{ public MyGUI(){ run(); } void run(){ setSize(100, 100); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// maybe
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();
}
});
另一种可能是从
窗口
类重写。这会减少发送的消息数量,如果默认的关闭操作设置为DISPOSE\u ON\u close
,也会起作用
具体地说,这意味着增加
@Override
public void dispose() {
System.out.println("Closed");
super.dispose();
}
到您的类MyGUI
注意:不要忘记调用
super.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!");
}
});
窗口事件: 这里有完整的程序,希望对您有所帮助。 公共类应用程序{
public static void main(String[] args) {
//Frame
JFrame window = new JFrame();
//Title:setTitle()
window.setTitle("First GUI App");
//Size: setSize(width, height)
window.setSize(600, 300);
//Show: setVisible()
window.setVisible(true);
//Close
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
JOptionPane.showConfirmDialog(null,"Are sure to close!");
}
@Override
public void windowOpened(WindowEvent e) {
super.windowOpened(e);
JOptionPane.showMessageDialog(null, "Welcome to the System");
}
});
}
}