返回首页

Swing中添加事件响应的三种处理方式说明

时间:2009-03-10 23:05来源:blogjava 作者:admin 点击:
Swing中添加事件响应的三种处理方式说明 举例说明事件响应 在Swing中,事件响应是通过监听器对象来处理事件的方式实行的,这种方式被称为事件委托模型. 以JButton举例,它内部有一个名为listene
  

Swing中添加事件响应的三种处理方式说明

举例说明事件响应

在Swing中,事件响应是通过监听器对象来处理事件的方式实行的,这种方式被称为事件委托模型.

以JButton举例,它内部有一个名为listenerList的链表,在点击按钮时,会产生一个ActionEvent事件,此后内部会依次调用位于listenerList中的每一个actionListener子类实例的actionPerformed方法,这就是事件响应的过程.

当调用JButton的addActionListener方法时, 外界actionListener子类实例的指针就被放入了listenerList中,当按钮点击事件产生时,这个实例的actionPerformed方法就会被调用,从而按钮的点击事件处理就被委托到了actionListener子类实例中进行处理.

实现ActionListener的三种方式

1.实现一个ActionListener子类,再把按钮的事件响应委托给这个子类的实例处理.这种方式并不常用,我在这里列出是为了教学.

2.让界面类实现ActionListener接口,再把事件响应委托给界面类.这种方式适合于处理一些短小简单或要求内聚的事件响应.

3.用匿名类实现ActionListener接口,再把事件委托给这个匿名类的实例.这种方式是Swing事件处理的主流.


方式一:实现一个ActionListener子类

// 实现了ActionListener接口的类
public class Button3ActionListener implements ActionListener{
  public void actionPerformed(ActionEvent e) {
    String buttonText=((JButton)e.getSource()).getText();
   
    System.out.println("你按下了" + buttonText);
  }
}

// 给按钮三添加事件处理
button3.addActionListener(new Button3ActionListener());

方式二:让界面类实现ActionListener接口

public class MyFrame extends JFrame implements ActionListener{
  public MyFrame() {
    ....
    button2.addActionListener(this);
  }
 
  /**
   * 按钮二的事件响应在此
   */
  public void actionPerformed(ActionEvent e) {
    if(e.getSource()==button2){
      showMsg("你按下了" + button2.getText());
    }  
  }
}

方式三:用匿名类的方式添加事件响应

button1 = new JButton("按钮一");

button1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        showMsg("你按下了" + button1.getText());
      }
});

 

顶一下
(0)
0%
踩一下
(3)
100%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
发布者资料
小朱 查看详细资料 发送留言 加为好友 用户等级:超级会员 注册时间:2008-11-18 17:11 最后登录:2012-02-06 13:02
推荐内容
热点内容