首页 | 互联网 | IT动态 | Cisco | Windows | Linux | Java | .Net | Oracle | 华为 | 存储世界 | 服务器 | 网络设备 | IDC | 安全 | 求职招聘
IT培训 | 数字网校 | 技术专题 | 电子书下载 | 教学视频 | 网页设计 | 平面设计 | 解决方案 | 直播室 | 虚拟考场 | 搜索 | 博客 | 沙龙 | 论坛
首页 | JAVA | C# | VB | VB.NET | C/C++ | delphi | 工程管理 | 其他语言 | 论坛
各大城市软件开发培训、软件人才免费咨询热线:400-700-5807
 您现在的位置: 中国IT实验室 >> 桌面开发 >> JAVA >> 文章正文
Java开发中的事件驱动模型实例详解
来源:ChinaItLab 作者:佚名 时间:2007-9-21


  每个事件响应时只涉及到对该事件感兴趣的侦听器。由于侦听器只要求实现一个合适的接口,所以实际上,可以在任何希望的地方接收和处理事件。在Java中使用侦听器对象处理事件的方式,称为委托事件模型,这是因为对于诸如按钮这种组件引起的事件响应,并不是由引起事件的对象本身处理,而是委托独立的侦听器对象进行处理,刚才的actionPerformed()其实就是一个委托处理方法。现在让我们来看一下,JButton是如何将用户的点击转化成方法处理的(如图1-2)。

  图1-2

  

  JButton组件初始化代码片断:

    private void initialize() {XML:NAMESPACE PREFIX = O />

        frame = new JFrame();

        frame.getContentPane ().setLayout (null);

        frame.setBounds (100, 100, 247, 165);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.setTitle ("事件驱动程序");

        //btnPress就是这次点击操作中的事件源

        btnPress = new JButton();

        btnPress.setText ("Press");

        btnPress.setName ("Press");

        btnPress.setBounds (63, 98, 99, 23);

        //向事件源btnPress植入侦听器对象ButtonEventHandler

        btnPress.addActionListener (new ButtonEventHandler(this));

        frame.getContentPane ().add(btnPress);

        frame.getContentPane ().add(txtMessage);

    }

  侦听器创建的代码片断:

//侦听器对象ButtonEventHandler(用来侦听按钮的点击操作)

    class ButtonEventHandler implements ActionListener {

        //窗体对象

        private EventDemo form = null;

        //通过构造体传入窗体对象,

        //作用在于让侦听器对象明白事件源处于

        //哪个窗体容器中

        public ButtonEventHandler(EventDemo form) {

            this.form = form;

        }

 

        //委托方法

        public void actionPerformed(ActionEvent e) {

           //该方法将会把事件的处理权交给窗体容器类的

//btnPress_Click方法处理。

            this.form.btnPress_Click(e);

        }

    }

 

 真正的事件处理代码片断:

     /**

     * 按钮btnPress的事件处理方法。

     *

     * @param e 事件参数

     */

    private void btnPress_Click(ActionEvent e) {

       

        String message = "你点击的按钮名叫:"

            + ((JButton) e.getSource()).getName();

       

        this.txtMessage.setText(message);

    }

 

  代码工作原理:

  JButton组件初始化代码片断已经明确阐述了按钮被创建后放置于窗体上,关键在于本代码片断的以下语句:

  btnPress.addActionListener(new ButtonEventHandler(this));

  该语句就是向事件源植入了侦听器对象ButtonEventHandler,该类实现了ActionListener结构,因此JButton类的对象btnPress这个时候已经具有了处理用户点击按钮的能力了。

上一页  [1] [2] [3] 下一页  

【责编:Luzi】
中国IT教育热线咨询
相关文章
框架:J2EE WEB应用架构分析
几种VC++数据库开发技术的相对比较
利用C#实现标注式消息提示窗口
用C#创建COM对象
Visual C#多线程参数传递浅析
Visual C#多线程参数传递浅析
基于HOOK和MMF的Win密码渗透技术
Visual C++设计超强仿QQ自动伸缩窗口
Java SE 6.0实现高质量桌面集成开发
Visual Basic 9.0隐式类型的局部变量
推荐文章

 精彩友情推荐
·锐捷交换机报价
·锐捷交换机
·锐捷网络网络交换机
·smc交换机
·smc交换机报价
·IDC资讯大全
·机房品质万里行
·IDC托管必备知识
·全国IDC报价
·网站推广优化
最新更新 推荐文章
·框架:J2EE WEB应用架构分析03-13
·几种VC++数据库开发技术的相对比…03-13
·利用C#实现标注式消息提示窗口03-13
·用C#创建COM对象03-13
·Visual C#多线程参数传递浅析03-13
·Visual C#多线程参数传递浅析03-13
·基于HOOK和MMF的Win密码渗透技术11-15
·Visual C++设计超强仿QQ自动伸缩…11-15
·Java SE 6.0实现高质量桌面集成开…11-15
·史玉柱东山再起幕后高人11-15
·Visual Basic 9.0隐式类型的局部…09-30
·用C#创建COM对象09-06
·IT管理十大失误及其对策08-30
·VC中利用MFC设计绘图程序初步08-23
·JAVA中对象创建和初始化过程08-23
·C语言中的位域的使用08-09
·浅谈Java桌面应用程序开发08-09
·C#的前途如何?08-02
·几种VC++数据库开发技术的相对比较07-12
·用Visual C#实现网络封包监视07-12
·VB.NET中的TextBox控件详解07-12
·VB.NET实现PC与掌上电脑PPC的双向通信07-05