自己定义一个Listener 类extends EventListener,
在implement这个listener的类中
定义add,remove,fire这个事件的方法
在变量改变时调用fire方法
在implement这个listener的类中
定义add,remove,fire这个事件的方法
在变量改变时调用fire方法
解决方案 »
- 终极题!!!!!体会多态
- 如何将字符串转换成类(字符串的名字跟类的名字一样)
- 干净的PO与查询,请问大家是如何处理的?
- 如何在java里面直接调用jar包
- 小第想问下 能否用JAVA结束指定的进程(如QQ。EXE)
- j2ee包,myeclipse
- 我写拉个数据库更新的程序以下是其中的一点主要部分,可是运行后显示update语法错误,请大家帮我看看,谢谢
- log4j的问题
- 我们公司的论坛,新开张的
- wait()、notify()、notifyAll()在使用是对象锁和调用这些方法的对像必须要一直?
- 在线等待--关于File类的构造函数问题
- 300分问些简单的问题:关于String.indexOf()方法
在implement这个listener的类中
定义add,remove,fire这个事件的方法
在变量改变时调用fire方法
http://developer.java.sun.com/developer/technicalArticles/Programming/KeepObjectsInSync/
import java.awt.*;
import java.applet.Applet;
import java.util.Observer;
import java.util.Observable;
/** This class extends the Observable class by making
two methods public. This is necessary in order to
delegate observable behavior in the counter class */
class MyObservable extends Observable {
public void clearChanged() {
super.clearChanged();
} public void setChanged() {
super.setChanged();
}}/** This is a counter class that delegates observable behavior
to a containted MyObservable object. A method is provided
to access this obect. The counter object has a private integer
variable to hold the counter value, a text field to display it,
and a button to increment the value. Note that since this Counter
is a GUI widget, it inherits it's behavor from the AWT class Panel.
Since we also want it to be observable, that behavior must be provided
through delegation. */
class Counter extends Panel {
Label countField;
Button incButton;
private int _count = 0;
MyObservable _observable; public Counter() {
setLayout(new BorderLayout());
add("Center",countField = new Label("Count: 0"));
add("South",incButton = new Button("Increment"));
_observable = new MyObservable();
} public int value() {
return _count;
} public Observable observable() {
return _observable;
} public boolean action(Event evt, Object arg) {
if(evt.target == incButton) {
_count++;
countField.setText("Count: "+ _count);
_observable.setChanged();
_observable.notifyObservers(this);
return true;
}
return false;
}
}/** This class provides a textual view of the counter,
and is an observer of the counter */
class TextView extends TextField implements Observer {
public TextView(Counter c) {
super(10);
setEditable(false);
setText(String.valueOf(c.value()));
} public void update(Observable o, Object counter) {
setText(String.valueOf(((Counter)counter).value()));
}}/** This class provides a scroll bar view of the counter value */
class ScrollView extends Scrollbar implements Observer { public ScrollView(Counter c) {
super(Scrollbar.HORIZONTAL,0,1,0,10);
setValue(c.value());
} public void update(Observable o, Object counter) {
setValue(((Counter)counter).value());
}}/** A simple applet to show the Counter and its two
Observers, a TextView and a ScrollView */
public class ObserverTest extends Applet {
Counter c;
TextView tv;
ScrollView sv; public ObserverTest() {
setLayout(new BorderLayout());
add("North",c = new Counter());
add("Center",tv = new TextView(c));
add("South",sv = new ScrollView(c));
c.observable().addObserver(tv);
c.observable().addObserver(sv); }}