使用handleEvent()方法,action()方法和mouseDown()方法处理事件的JAVA Application程序.

程序:

import java.awt.*;
public class deal    //定义主类deal
{
    public static void main(String args[])    //创建主函数main()
        {myframe mf=new myframe();}              //定义并创建myframe类的对象mf
}

class myframe extends Frame     //创建继承于Frame类的子类myframe
{
    Button sa;                //定义按钮
    String message="你尚未点击按钮";  
    int cnt=0;               //保存点击按钮次数
    int r,g,b;             //红,绿,蓝三色分量
    Dimension pos=new Dimension();    //记录鼠标点击位置
    String mouse="单击";   //记录鼠标点击次数,是单击还是双击(是点一下,还是快速点两下)
    boolean color;             //区别单击是对按钮的还是对背景的
  
    myframe()    //构造函数
    {
        super("我的窗口");    //调用父类构造函数,显示窗口标题
        sa=new Button("按钮");  
        setLayout(new FlowLayout());   //设置窗口为FlowLayout()型布局
        add(sa);   
        pack();     //调整窗口及其构件的大小
        show();     //显示窗口
    }  
    public void paint(Graphics graph)
    {
       if(cnt!=0&&color)   //只有点击按钮时才变颜色
       {       //每点击一次蓝色增加64;蓝色增加到256时绿色增加64,绿色增加到256时红色增加64
         color=(((r=((g=((b=(cnt*64)%256)==0)?(g+64)%256:g)==0)&&(b==0)?(r+64)%256:r)==0)&&g==0&&b==0)?false:true;
          message=new String("你点击了"+cnt+"次按钮");
       }
       graph.setColor(new Color(r,g,b));   //重新设置颜色
       graph.drawString(message,10,50);     //用新的颜色打印
       graph.drawString("当前颜色:  红--"+r+";绿--"+g+";蓝--"+b,10,70);
       graph.drawString("鼠标"+mouse+"位置:("+pos.width+","+pos.height+")",10,90);
    }        //记录鼠标单击或双击的位置
    public boolean handleEvent(Event e)    //重载handleEvent(Event e)方法
    {
         if(e.id==Event.WINDOW_DESTROY)      //若用户点击窗口的“关闭”图标
         {
            dispose();   //关闭窗口
            System.exit(0);   //退出系统
         }  
         return super.handleEvent(e);    //否则,使用原事件分配体系处理其他事件
     }
     public boolean action(Event e,Object o)   //handleEvent()方法调用action(Event e,Object o)
     {
            if(e.target==sa)   //若点击按钮
          {
              cnt++;    //计数器加1
              color=true;
              repaint();    //重画窗口
           }
          return super.action(e,o);  //否则,使用原事件分配体系处理其他事件
     }
     public boolean mouseDown(Event e,int x,int y)
     {
            pos.width=x;   //记录点击位置
            pos.height=y;
            if(e.clickCount==1)   //判断是单击还是双击(是点一下,还是快速点两下)背景
                 mouse="单击";
             else   mouse="双击";
            color=false;
            repaint();//重画窗口显示新信息
            return true;    //截获其他所有事件,均不再处理
      }
}

 总结:

           这是一个简单的使用handleEvent()方法,action()方法和mouseDown()方法处理事件的JAVA Application程序.
   (1) 重载后的handleEvent()方法完成两个功能: 一是点击窗口关闭按钮时退出系统;         二 是调用父类handleEvent()方法把其他事件分流给action()方法处理;
   (2)action()方法统计点击按钮的次数并用新颜色重画窗口;
   (3)mouseDown()方法记录点击背景的横纵坐标位置,判断是单击还是双击,并把新记录信息传递给程序显示出来;
   
  细节:
   (4)记录鼠标点击位置:
    Dimension pos=new Dimension();
    ----
    pos.width=x;
    s.height=y;
   (5)判断是单击还是双击(是点一下,还是快速点两下)背景:
          if(e.clickCount==1)  
             mouse="单击";
           else   mouse="双击";
   (6)用户点击窗口的“关闭”图标:
         if(e.id==Event.WINDOW_DESTROY)    
         {
            dispose();   //关闭窗口
            System.exit(0);   //退出系统
   (7)三色分量的改变算法:
          r=((g=((b=(cnt*64)%256)==0)?(g+64)%256:g)==0)&&(b==0)?(r+64)%256:r
   (8)       重载handleEvent(Event e)方法:
           public boolean handleEvent(Event e)
            使用原事件分配体系处理其他事件: 

        return super.handleEvent(e); 
   (9)       public boolean action(Event e,Object o)  

//handleEvent()方法调用action (Event     e,Object o)
 return super.action(e,o);  //使用原事件分配体系处理其他事件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值