关于JAVA匿名内部类的一点讨论

来源:java认证发布时间:2012-11-12 12:47:17java认证视频



那么,如何使用内部类,匿名类实现事件处理呢?
JAVA---事件适配器

 1.事件适配器--EventAdapter
  下例中采用了鼠标适配器:
  

import java.awt.*;
  import java.awt.event.*;
  public class MouseClickHandler extends MouseAdaper{
    public void mouseClicked(MouseEvent e) //只实现需要的方法
       { ……}
  }
 
  java.awt.event包中定义的事件适配器类包括以下几个:
  1.ComponentAdapter( 组件适配器)
  2.ContainerAdapter( 容器适配器)
  3.FocusAdapter( 焦点适配器)
  4.KeyAdapter( 键盘适配器)
  5.MouseAdapter( 鼠标适配器)
  6.MouseMotionAdapter( 鼠标运动适配器)
  7.WindowAdapter( 窗口适配器)
 2. 用内部类实现事件处理
  内部类(inner class)是被定义于另一个类中的类,使用内部类的主要原因是由于:
  ◇ 一个内部类的对象可访问外部类的成员方法和变量,包括私有的成员。
  ◇ 实现事件监听器时,采用内部类、匿名类编程非常容易实现其功能。
  ◇ 编写事件驱动程序,内部类很方便。  
  因此内部类所能够应用的地方往往是在AWT的事件处理机制中。
例5.11
   
import java.awt.* ;
   import java.awt.event.*;
     public class InnerClass{
       private Frame f;
       private TextField tf;
       public InnerClass(){
       f=new Frame("Inner classes example");
       tf=new TextField(30);
     }
     public voidi launchFrame(){
       Label label=new Label("Click and drag the mouse");
       f.add(label,BorderLayout.NORTH);
       f.add(tf,BorderLayout.SOUTH);
       f.addMouseMotionListener(new MyMouseMotionListener());/*参数为内部类对象*/
       f.setSize(300,200);
       f.setVisible(true);
     }
     class MyMouseMotionListener extends MouseMotionAdapter{ /*内部类开始*/
       public void mouseDragged(MouseEvent e) {
         String s="Mouse dragging: x="+e.getX()+"Y="+e.getY();
         tf.setText(s); }
       } ;
       public static void main(String args[]) {
         InnerClass obj=new InnerClass();
         obj.launchFrame();
       }
     }//内部类结束
    }

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答