实现下列哪个接口可以对TextField对象的事件进行监听和处理?  A ActionListener  B FocusListener  C MouseMotionListener  D WindowListener  E ContainerListener 达人能帮忙总结一下java里的这些Listener都怎么区分吗?感觉这么多的Listener,好复杂啊,为什么要分这么多种呢?

解决方案 »

  1.   

    多选吗?
    如果输入完毕点回车的话,是ActionListener 
    如果按tab转移焦点的话,应该是FocusListener吧(这个不确定)
      

  2.   

    应该是多选的.
    楼上,java API里怎么查?
      

  3.   

    ActionListener 可用于textfield,button,等接收操作事件的侦听器接口,对处理操作事件感兴趣的类可以实现此接口.
     类推了!FocusListener 用于接收组件上的键盘焦点事件的侦听器接口。对处理焦点事件感兴趣的类要么实现此接口(以及它包含的所有方法),要么扩展抽象 FocusAdapter 类(只重写感兴趣的方法)。然后,根据该类创建的侦听器对象使用组件的 addFocusListener 方法向该组件注册。当组件获得或失去键盘焦点时,可调用侦听器对象中的相关方法,并将 FocusEvent 传递给它。 
    MouseMotionListener 用于接收组件上的鼠标移动事件的侦听器接口WindowListener 用于接收窗口事件的侦听器接口。旨在处理窗口事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象类 WindowAdapter(仅重写所需的方法)。然后使用窗口的 addWindowListener 方法将从该类所创建的侦听器对象向该 Window 注册。当通过打开、关闭、激活或停用、图标化或取消图标化而改变了窗口状态时,将调用该侦听器对象中的相关方法,并将 WindowEvent 传递给该方法。ContainerListener  用于接收容器事件的侦听器接口。对处理容器事件感兴趣的类要么实现此接口(以及它包含的所有方法),要么扩展抽象 ContainerAdapter 类(只重写感兴趣的方法)。然后,根据该类创建的侦听器对象使用组件的 addContainerListener 方法向该组件注册。当容器的内容因为添加和移除组件而更改时,可调用侦听器对象中的相关方法,并将 ContainerEvent 传递给它。
      

  4.   

    java.awt.TextField?自己看javadoc,我没有查,但是我认为是ABCTextField不是Container也不是Window,但是显然能接受回车,能接受鼠标移动,能够监听焦点移动3个事件但是JTextField记不清能不能ContainerListener了,JXxx都是JComponent->Container,所以或许可以