蓝森林首页 | 返回主页 | 本站地图 | 站内搜索 | 联系信箱 |
 您目前的位置:首页 > 自由软件 > 技术交流 > 应用编程


    

蓝森林 http://www.lslnet.com 2006年6月6日 10:18


!!请教一个Observer问题!!

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()

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

1 setChange 是 setChanged

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

你是练习的,还是需要根据特定代码改的,the following is a simple example

[code]

import java.util.*;

public class test2 extends Observable
{
        public test2(){}

        public static void main(String[] xx)
        {

                test2 o = new test2();

/**
* adds any objects to be observed
*/
                o.addObserver(new oo1());
                o.addObserver(new oo2());

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

                o.setChanged();


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

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



        }

        static class oo1 implements Observer
        {
                public void update(Observable o, Object arg)
                {
                        System.out.println("oo1:"+arg);
                }
        }

        static class oo2 implements Observer
        {
                public void update(Observable o, Object arg)
                {
                        System.out.println("oo2:"+arg);
                }
        }
}



[/code]

以下这段代码应该可以运行
[code]
import java.util.Observable;
import java.util.Observer;

public class ObserverText {
    public static void main(String args[]) {
        MyObservable mm = new MyObservable();
        mm.addObserver(new MyObserver());
        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;
            setChanged();
        }
        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" + ((MyObservable)o).getData());

    }
}

[/code]



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 蓝森林网站 版权所有。 E-mail : webmaster@lslnet.com