Java开发中的事件驱动模型实例详解

http://tech.ddvip.com   2007年09月18日    社区交流

内容摘要:在Java编程技术中,最常用的可视化编程当属Java Swing技术,Java Swing为开发者提供了很多现成的组件,如:按钮(JButton),单选按钮(JRadioButton)等。为了管理用户与组成程序图形用户界面的组件间的交互,必须理解在Java中如何处理事件。

  侦听器创建的代码片断:

//侦听器对象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这个时候已经具有了处理用户点击按钮的能力了。

  当用户点击btnPress这个按钮的时候,按钮对象会直接把这次点击感觉传递给ButtonEventHandler的actionPerformed方法处理,为养成较好的编程习惯,我们中心并不建议学员直接在该委托方法中编写代码,而是需要将该事件处理再次转发给窗体中的某个方法来处理,这个方法的命名也必须是有规则的,就是事件源名+下划线+事件名(btnPress_Click),并且该方法必须具有事件参数ActionEvent,因为在该对象中明确指明了,哪个按钮受到了点击了。e.getSource()方法返回了被点击按钮的对象,由于这次被点击的是一个按钮,因此我们需要使用JButton对e.getSource()的返回值进行强转,随后通过getName()方法得到这个按钮的名字。至此整个点击事件处理完了。

作者:陈宇    责编:豆豆技术应用

正在加载评论...