zoukankan      html  css  js  c++  java
  • JAVA事件监听机制的实现

      今天学习了java的事件编程机制,略有体会,先在此记下心得。

      第一,首先明确几个概念。

    事件源:一个产生或者触发事件的对象。
    事件:承载事件源状态改变时的信息对象。
    事件监听器接口:实际上就是一个类,该类实现了某个事件监听器接口。

      具体来说,就是事件源状态发生变化,比如说是发生点击。事件源状态发生变化后要将状态变化通过“事件”这个载体,传递到相应的事件监听接口进行处理(大概是这样理解吧)。因此,为了能够实现事件的监听,有以下几个步骤需要实现。

    一个类实现事件监听的步骤:

    1、实现相应的接口;
    2、把接口的处理方法根据需要重新编写;
    3、在事件源注册监听。
     
      
     
      很关键一点是一定要记得注册事件,这三个步骤缺一不可!
      以下附上今天的源代码:
    /*
     * 实现java事件监听机制
     */
    package com.listener;
    import java.awt.*;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import javax.swing.*;
    
    public class Demo9_5 extends JFrame
    {
           //定义组件
          JButton jb1 ,jb2 ;
          MyPanel jp1 ;
           public static void main(String[] args)
          {
                Demo9_5 demo9_5 = new Demo9_5();
                
          }
           public Demo9_5()
          {
                 //创建组件  
                 jb1 = new JButton( "黑色");
                 jb2 = new JButton( "红色");
                 //添加组件
                 jp1 = new MyPanel();
                
                 this .setLayout( new GridLayout(3,1));       //设置布局样式
                 this .add(jb1 );
                 this .add(jp1 );
                 this .add(jb2 );
                
                 //注册监听!
                 this .addMouseListener(jp1 );
                
                
                 //显示窗体
                 this .setSize(400,300);
                 this .setVisible( true);
                 this .setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE);
          }
    }
    
    class MyPanel extends JPanel implements MouseListener
    {
           //画出背景颜色
           public void paint(Graphics g)
          {
                 super .paint(g);
                 //获取当前 mypanel的宽和高
                 int w,h;
                w = this .getWidth();
                h = this .getHeight();
                g.fillRect(0, 0, w, h);
          }
    
           @Override
        public void mouseClicked(MouseEvent e)
        {
              // TODO Auto-generated method stub
              System. out .println("鼠标点击了MyPanel" );
        }
    
           @Override
        public void mouseEntered(MouseEvent e)
        {
              // TODO Auto-generated method stub
                
        }
    
           @Override
        public void mouseExited(MouseEvent e)
        {
              // TODO Auto-generated method stub
             
        }
    
           @Override
        public void mousePressed(MouseEvent e)
        {
              // TODO Auto-generated method stub
             
        }
    
           @Override
        public void mouseReleased(MouseEvent e)
        {
              // TODO Auto-generated method stub
             
        }
    }

     

      
      
  • 相关阅读:
    Nginx常用命令
    Nginx进程模型
    华为联运游戏或应用审核驳回:使用花币充值时,对支付延时处理不当,导致商品不到账
    使用Data Ability读取系统设置项
    100个HarmonyOS 2.0开发者Beta公测名额,限时认领!
    【有奖活动】HarmonyOS开发者创新大赛颁奖典礼丨见证星星之火燃爆盛夏
    你其实可以更快!用Toolkit拖拽式编码方法帮你快速提升开发效率
    真机调试设备不够?华为AGConnect云调试帮你忙
    华为后台某应用商品展示价格币种随其他应用配置而变化
    HMS Core.Sparkle影音娱乐创新沙龙邀您参加
  • 原文地址:https://www.cnblogs.com/starwolf/p/3218814.html
Copyright © 2011-2022 走看看