Java Swing 为EXIT_ON_CLOSE添加操作侦听器

2022-09-01 08:17:05

我有一个简单的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 时)。我该怎么做?


答案 1

试试这个。

    addWindowListener(new WindowAdapter()
        {
            @Override
            public void windowClosing(WindowEvent e)
            {
                System.out.println("Closed");
                e.getWindow().dispose();
            }
        });

答案 2

另一种可能性是从类中重写 dispose()。这样可以减少发送的消息数,并且如果默认关闭操作设置为 ,则此方法也有效。WindowDISPOSE_ON_CLOSE

具体而言,这意味着添加

@Override
public void dispose() {
    System.out.println("Closed");
    super.dispose();
}

到你的班级。MyGUI

注意:不要忘记调用,因为这会释放屏幕资源!super.dispose()


推荐