【问题标题】:How would I execute a function before you close JFrame [duplicate]在关闭 JFrame 之前我将如何执行一个函数 [重复]
【发布时间】:2012-11-29 14:54:51
【问题描述】:

可能重复:
Call a method when application closes

我想在使用 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 关闭我的 java 应用程序之前调用一个方法; 我已经用 windowClosed/windowsClosing 尝试了 WindowListener,但它不起作用。 它看起来像这样

public class exampleFrame JFrame implements{

public exampleFrame (){
    this.addWindowListener(new windowAction());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

class windowAction implements WindowListener{

        @Override
        public void windowActivated(WindowEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void windowClosed(WindowEvent e) {
        System.out.prinln("window closed")

        }

        @Override
        public void windowClosing(WindowEvent e) {
            // TODO Auto-generated method stub
            System.out.prinln("window closing")
        }

        @Override
        public void windowDeactivated(WindowEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void windowDeiconified(WindowEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void windowIconified(WindowEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void windowOpened(WindowEvent e) {
            // TODO Auto-generated method stub

        }

    }

}

【问题讨论】:

  • “不起作用”是什么样的?
  • “你能做这样的事吗?”是的,你可以。
  • 不起作用,因为没有任何结果。例如,您放置了 System.out.println("windows close");...该消息未显示,因此函数窗口关闭或 windowsClosing 正在调用该消息。或者除非我做错了。
  • this.addWindowListener(new windowAction());
  • 首先,如果使用WindowListener,请使用setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);(如副本的答案所示)。

标签: java swing jframe awt windowlistener


【解决方案1】:

我认为你想要的是这样的:

public class ExampleFrame extends JFrame{
   public ExampleFrame(){

      // you can use WindowAdapter and implement only the methods you need
      addWindowListner(new WindowAdapter(){

           @Override
           public void windowClosing(WindowEvent et) {
               System.out.println("Window closing");
           }
      }
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

【讨论】:

  • 试试看它失败了(至少有两个原因)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
  • 2021-12-19
  • 2019-02-22
  • 1970-01-01
相关资源
最近更新 更多