免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1205 | 回复: 3
打印 上一主题 下一主题

!!请教一个Observer问题!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-01-03 23:49 |只看该作者 |倒序浏览
import java.util.Observable;
import java.util.Observer;

public class ObserverText
{public static void main(String args[])
   {myObservable mm=new myObservable();
    myObserver nn=new myObserver(mm);
    mm.setData(1);
    mm.setData(2);
    mm.setData(3);
    mm.setData(4);
   }
       
}

class myObservable extends Observable
{int data=0;
public int getData(){return data;}
public void setData(int i)
   {if(data!=i)
      {data=i;
       setChange();
      }
    notifyObservers();
   }
}

class myObserver implements Observer
{
public myObserver()
   {}
public myObserver(myObservable m)
   {m.addObserver(this);}
public void update(Observable o,Object arg/*任意对象,用于传递参数*/){

      System.out.println("Data has changed to" +o.getData());

   }
}


不能编译
cannot find symbol method  setChange()
cannot find symbol method  getData()

不知道为什么找不到。求救,多谢 先!!!

论坛徽章:
0
2 [报告]
发表于 2006-01-04 00:54 |只看该作者
1 setChange 是 setChanged

2 getData ,Observable 里没有 getData  这个方法

论坛徽章:
0
3 [报告]
发表于 2006-01-04 01:19 |只看该作者
你是练习的,还是需要根据特定代码改的,the following is a simple example



  1. import java.util.*;

  2. public class test2 extends Observable
  3. {
  4.         public test2(){}

  5.         public static void main(String[] xx)
  6.         {

  7.                 test2 o = new test2();

  8. /**
  9. * adds any objects to be observed
  10. */
  11.                 o.addObserver(new oo1());
  12.                 o.addObserver(new oo2());

  13. /**
  14. * o.hasChanged() will return true after o.setChanged()
  15. * and you can call o.clearChanged() to cancle it
  16. */

  17.                 o.setChanged();


  18. /**
  19. * notify all of its observers and pass a argument
  20. */
  21.                 o.notifyObservers("changed!");

  22. /**
  23. * o.hasChanged() will return false,because it finished the notification
  24. *
  25. */



  26.         }

  27.         static class oo1 implements Observer
  28.         {
  29.                 public void update(Observable o, Object arg)
  30.                 {
  31.                         System.out.println("oo1:"+arg);
  32.                 }
  33.         }

  34.         static class oo2 implements Observer
  35.         {
  36.                 public void update(Observable o, Object arg)
  37.                 {
  38.                         System.out.println("oo2:"+arg);
  39.                 }
  40.         }
  41. }



复制代码

论坛徽章:
0
4 [报告]
发表于 2006-01-04 09:53 |只看该作者
以下这段代码应该可以运行

  1. import java.util.Observable;
  2. import java.util.Observer;

  3. public class ObserverText {
  4.     public static void main(String args[]) {
  5.         MyObservable mm = new MyObservable();
  6.         mm.addObserver(new MyObserver());
  7.         mm.setData(1);
  8.         mm.setData(2);
  9.         mm.setData(3);
  10.         mm.setData(4);
  11.     }

  12. }

  13. class MyObservable extends Observable {
  14.     int data = 0;

  15.     public int getData() {
  16.         return data;
  17.     }

  18.     public void setData(int i) {
  19.         if (data != i) {
  20.             data = i;
  21.             setChanged();
  22.         }
  23.         notifyObservers();
  24.     }
  25. }

  26. class MyObserver implements Observer {
  27.     public MyObserver() {
  28.     }

  29.     public MyObserver(MyObservable m) {
  30.         m.addObserver(this);
  31.     }

  32.     public void update(Observable o, Object arg/*任意对象,用于传递参数*/) {
  33.         System.out.println("Data has changed to" + ((MyObservable)o).getData());

  34.     }
  35. }

复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP