黑马程序员 --------------匿名内部类与图形界面AWT的结合及窗口事件

 黑马程序员 --------------匿名内部类与图形界面AWT的结合及窗口事件

                                   
.------<a href="
http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

 

匿名内部类:
匿名内部类  :就是(局部)内部类的简化写法。
 
     1. 前提:存在一个类(具体类或抽象类)或者接口(抽象)
  2. 匿名对象格式:  new 类名或者接口名(){重写所有的方法(添加方法体内容);}.方法
                       new 类名或者接口名(){重写所有的方法(添加方法体内容);}.方法
    3. 匿名内部类本质是什么呢? 
                   本质 new 了一个匿名对象,  在堆内存开辟了一个空间(1.具体类的对象2.抽象类的子类的对象 3.实现接口的实例子类的对象)
                   是一个(继承了该类或者实现了该接口的具体子类)的匿 名对象。
                   即是匿名对象,就可调方法
                   在开发中,当我们看到抽象类或接口作为参数时,需要传入的是一个具体的实现子类对象.如果该方法只调用一次,我们就可以使用
     匿名内部类的格式来做       
              4.匿名内部类其实就是外部类,里面有一个类,这个类没有名字,就不能创建对象,那就继承他的父类或其接口,
                父类或其接口是抽象类,内有抽象的方法,没有方法体内融合,也不能创建对象,咋办啦?
               这时我们就要给父类的对象加上一个{},里面覆盖了抽象方法函数,同事还要自定义 方法体内容。
              5.创建了父类的对象,并有对象体内容,我们称为胖对象,匿名内部类其实就是内部类的简写格式。
              6.其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖。 可以理解为带内容的对象。
               匿名内部类中定义的方法最好不要超过3个。

 

在java.awt.*;有一个类window中有一个方法函数,即void addwindowListener(WindowListener l)
WindowListener l是一个接口,而在java.awt.event.*中有一个类Windowadapter可以实现 WindowListener接口
并覆盖了其中的所有方法 我们自定义一个子类继承自Windowadapter覆盖我需要的方法即可
public abstract class WindowAdaper implenments WindowListener
{ void windowActivated(windowEvent e){}
void windowClosed(windowEvent e){}
void windowAClosing(windowEvent e){}
void windowInconified(windowEvent e){}
void windowOpened(windowEvent e){}
}


 因为WindowListener的子类WindowAdapter已经实现了Win  dowListener接口。
  并覆盖了其中的所有方法。那么我只要继承自Windowadapter覆盖我需要的方法即可。
       */

 


class Nimin
{
 public static void main(String[] args)
 { 
         //建立一个窗体Frame的对象,并初始化了姓名
   Frame f =new Frame("我的窗口");
   //设置窗口的显示
   f.setVisible(true);
   //设置窗口的图形面积大小
         f.setSize(500,250);
         //设置窗口的图形在屏幕的位置
       f.setLocation(300,200);

                //设置窗口的布局管理方式,这里采用
    f.setLayout(new FlowLayout());

           //创建子类Button的对象,并初始化值
     Button b =new Button("按钮");
     //调用容器子类 Containerd 的add()方法,把按钮添加进窗口组件里
     f.add(b);


       1.第一种传统的 f.addWindowListener(new myWin())方法
     //自定义一个子类myWin继承父类 WindowAdaper  父类WindowAdaper 实现 接口 WindowListener 
   
     class myWin extends WindowAdaper(windowEvent e)
     {   void windowActivated(windowEvent e)
      {System.out.println("激活窗口事件"+e.toString());}
         void windowOpened(windowEvent e)
      {System.out.println("关闭窗口事件"+e.toString());
       System.exit(0);
      }
     }
     //添加窗口监听器WindowListener

     f.addWindowListener(new myWin())

    
2.这里用new myWin()的匿名内部类
    f.addWindowListener(new myWin()

       {
   public void windowClosing(WindowEvent e)
   {
    System.out.println(" 关闭窗口事件"+e.toString());
    System.exit(0);
   }
   public void windowActivated(WindowEvent e)
   {
    System.out.println("激活窗口事件"+e.toString());

   }
   
   public void windowOpened(WindowEvent e)
   {
    System.out.println(" 打开窗口事件"+e.toString());
   }

  });
  

 

 


  System.out.println("Hello World!");
 }
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值