当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:16:00  来源:本站整理

动态绑定事件(java AWT)[Java编程]

赞助商链接



  本文“动态绑定事件(java AWT)[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
新AWT事件模子给我们带来的一个好处就是机动性.在老的模子中我们被迫为我们的程序行动艰难地编写代码.但新的模子我们可以用单一办法调用增添和删除事件行动.下面的例子证明了这一点:
//: DynamicEvents.java
// The new Java 1.1 event model allows you to
// change event behavior dynamically. Also
// demonstrates multiple actions for an event.
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class DynamicEvents extends Frame {
  Vector v = new Vector();
  int i = 0;
  Button 
    b1 = new Button("Button 1"), 
    b2 = new Button("Button 2");
  public DynamicEvents() {
    setLayout(new FlowLayout());
    b1.addActionListener(new B());
    b1.addActionListener(new B1());
    b2.addActionListener(new B());
    b2.addActionListener(new B2());
    add(b1);
    add(b2);
  }
  class B implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      System.out.println("A button was pressed");
    }
  }
  class CountListener implements ActionListener {
    int index;
    public CountListener(int i) { index = i; }
    public void actionPerformed(ActionEvent e) {
      System.out.println(
        "Counted Listener " + index);
    }
  }    
  class B1 implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      System.out.println("Button 1 pressed");
      ActionListener a = new CountListener(i++);
      v.addElement(a);
      b2.addActionListener(a);
    }
  }
  class B2 implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      System.out.println("Button 2 pressed");
      int end = v.size() -1;
      if(end >= 0) {
        b2.removeActionListener(
          (ActionListener)v.elementAt(end));
        v.removeElementAt(end);
      }
    }
  }
  public static void main(String[] args) {
    Frame f = new DynamicEvents();
    f.addWindowListener(
      new WindowAdapter() {
        public void windowClosing(WindowEvent e){
          System.exit(0);
        }
      });
    f.setSize(300,200);
    f.show();
  }
} ///:~
这个例子采纳的新伎俩包含:
(1) 在每个按钮上附着不少于一个的接纳器.普通,组件把事件作为多造型处理,这意味着我们可认为单个事件注册很多接纳器.当在特别的组件中一个事件作为单一造型被处理时,我们会得到TooManyListenersException(即太多接纳器非常).
(2) 程序履行期间,接纳器动态地被从按钮B2中增添和删除.增添用我们前面见到过的办法完成,但每个组件一样有一个removeXXXListener()(删除XXX接纳器)办法来删除各种范例的接纳器.

这种机动性为我们的编程供应了更强盛的本领.
我们注意到事件接纳器不能保证在号令他们被增添时可被调用(固然事实上大部份的履行工作都是用这种办法完成的).
  以上是“动态绑定事件(java AWT)[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>动态绑定</b>
  • 动态绑定事件(java AWT)
  • 关于动态绑定的理解
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .