黑马程序员技术交流社区

标题: 求解Frame的疑问 [打印本页]

作者: 金兴    时间: 2012-4-11 22:40
标题: 求解Frame的疑问
做了一个关闭窗体的一个小功能,代码如下::
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. public class TestFrame
  4. {
  5.         public static void main(String [] args)
  6.         {
  7.                 Frame f=new Frame("窗体测试窗口");
  8.                 f.setSize(500,300);
  9.                 f.setVisible(true);
  10.                 f.addWindowListener(new MyWindowListener());
  11.         }
  12. }
  13. class MyWindowListener implements WindowListener
  14. {
  15.         public void windowClosing(WindowEvent e)
  16.         {
  17.                 e.getWindow().setVisible(false);
  18.                 ((Window)e.getComponent()).dispose();
  19.                 System.exit(0);
  20.         }
  21.         public void windowActivated(WindowEvent e){}
  22.         public void windowClosed(WindowEvent e){}
  23.         public void windowDeactivated(WindowEvent e){}
  24.         public void windowDeiconified(WindowEvent e){}
  25.         public void windowIconified(WindowEvent e){}
  26.         public void windowOpened(WindowEvent e){}
  27. }
复制代码
我的疑问是我只想调用关闭的功能,那么只调用windowClosing()这个方法就可以了,为什么还要调用以下方法呢 ??
public void windowActivated(WindowEvent e){}
        public void windowClosed(WindowEvent e){}
        public void windowDeactivated(WindowEvent e){}
        public void windowDeiconified(WindowEvent e){}
        public void windowIconified(WindowEvent e){}
        public void windowOpened(WindowEvent e){}

作者: 未长法    时间: 2012-4-11 22:50
处理窗口事件的类要么实现此接口(及其包含的所有方法)),要么扩展抽象类 WindowAdapter(仅重写所需的方法)。
因为你的MyWindowListener 实现了WindowListener接口。,所以你要复写里面的全部抽象方法。
你如果只想调用关闭的功能可以扩展抽象类WindowAdapter(仅重写所需的方法)。
作者: 薛飞飞    时间: 2012-4-11 22:53
想要实现WindowListener接口就必须实现它的所有抽象方法

想只复写windowClosing()这一个方法就可以关闭窗口可以使用以下代码

import java.awt.*;

import java.awt.event.*;

public class TestFrame{

        public static void main(String [] args){

                Frame f=new Frame("窗体测试窗口");

                f.setSize(500,300);

                f.setVisible(true);

               f.addWindowListener(new WindowAdapter() {
                       
                        public void windowClosing(WindowEvent e) {
                               
                                Frame frame = (Frame) e.getSource();
                                frame.dispose();
                        }
                       
                });
        }
}
作者: 杨华威    时间: 2012-4-12 09:39
public void windowActivated(WindowEvent e){}

22.        public void windowClosed(WindowEvent e){}

23.        public void windowDeactivated(WindowEvent e){}

24.        public void windowDeiconified(WindowEvent e){}

25.        public void windowIconified(WindowEvent e){}

26.        public void windowOpened(WindowEvent e){}

没必要写这些空的监听事件,用不到就不写,提供这个接口就是为了方便使用的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2