首页 | 源码下载 | 网站模板 | 网页特效 | 广告代码 | 网页素材 | 字体下载 | 书库 | 站长工具
会员投稿 投稿指南 RSS订阅
当前位置:主页>网络编程>java教程>资讯:Java回调方式:Java Listener模式

Java回调方式:Java Listener模式

www.jz123.cn  2010-04-26   来源:   中国建站    责任编辑(袁袁)    我要投递新闻

以上是java的MVC框架下最精彩的一段代码.下面是model的工作例子:


  1 //测试model
  2 public static void main(String[] args) {
  3 Model model = new Model();
  4 //添加一个匿名内部类,里面实现了click方法.
  5 model.addListener(new MouseListener() {
  6
  7 public void click() {
  8 System.out.println("我被点击了");
  9 }
  10 });
  11 //再添加一个内部类.
  12 model.addListener(new MouseListener() {
  13
  14 public void click() {
  15 System.out.println("我被点击了");
  16 }
  17 });
  18
  19 //下面给model一个点击,在实际的JDK源代码中,也是这样子去调用Model中的响应方法的.
  20 model.clickModel();
  21 }
  22

  我们可以看到,只点击一次model,却可以输出了2次"我被点击了"的信息.这也就是为什么你可以向JButton,JComboBox,JList,JTable等等里面添加任意多的各种listener.当然其中的奥秘仍需要各位读者自己慢慢琢磨.下面是源代码:

 

 1 public class Model {
  2
  3 //初始化50个监听器
  4 private MouseListener[] listeners = new MouseListener[50];
  5 //用于记录当前listeners数组记录到了哪里
  6 int index = 0;
  7
  8 public void addListener(MouseListener listener) {
  9 //向这个model中注册一个监听器
  10 listeners[index++] = listener;
  11 }
  12
  13 public void clickModel() {
  14 //调用注册进来所有的listener的click方法
  15 for (int i = 0; i < index; i++) {
  16 listeners[i].click();
  17 }
  18 }
  19 //测试model
  20 public static void main(String[] args) {
  21 Model model = new Model();
  22 //添加一个匿名内部类,里面实现了click方法.
  23 model.addListener(new MouseListener() {
  24
  25 public void click() {
  26 System.out.println("我被点击了");
  27 }
  28 });
  29 //再添加一个内部类.
  30 model.addListener(new MouseListener() {
  31
  32 public void click() {
  33 System.out.println("我被点击了");
  34 }
  35 });
  36
  37 //下面给model一个点击
  38 model.clickModel();
  39 }
  40 }
  41
  42 interface MouseListener {
  43 //当click方法被调用的时候代表被鼠标点击了.
  44 void click();
  45 }

上一篇:Java对于Oracle 联合策略举足轻重 下一篇:Java文件IO机制简介

评论总数:0 [ 查看全部 ] 网友评论


关于我们隐私版权广告服务友情链接联系我们网站地图