use*_*671 5 java methods boolean
如何检查布尔值以在给定的时间段内更改状态,如果在该时间段内进行了更改,请执行方法?
可以用Java给出任何帮助.
谢谢.
aio*_*obe 15
听起来你想在一个类中包含一个布尔值,你可以监听它的变化.
class ObservableBoolean {
// "CopyOnWrite" to avoid concurrent modification exceptions in loop below.
private final List<ChangeListener> listeners =
new CopyOnWriteArrayList<ChangeListener>();
private boolean value;
public boolean getValue() {
return value;
}
public synchronized void setValue(boolean b) {
value = b;
for (ChangeListener cl : listeners)
cl.stateChanged(new ChangeEvent(this));
}
public synchronized void addChangeListener(ChangeListener cl) {
listeners.add(cl);
}
public synchronized void removeChangeListener(ChangeListener cl) {
listeners.remove(cl);
}
}
Run Code Online (Sandbox Code Playgroud)
然后简单地做:
ObservableBoolean b = new ObservableBoolean();
//...
// Start the "period of time":
b.addChangeListener(iWantToBeNotifiedOfChanges);
// ...
// End the "period of time":
b.removeChangeListener(iWantToBeNotifiedOfChanges);
Run Code Online (Sandbox Code Playgroud)
这实际上是MVC模式(和观察者模式)的简单情况.在这种情况下,模型是ObservableBoolean,视图将是想要通知更改的"视图".
ChangeListener如果你想避免一个奇怪的javax.swing...导入,你也可以编写自己的界面
最简单的方法是使用包装类...
public class Bool
{
public Bool(){ _val = false; }
public Bool(boolean val) { _val = val; }
public boolean getValue(){ return _val; }
public void setValue(boolean val){
_changesupport.firePropertyChange("value",_val,_val=val);
}
public void addPropertyChangeListener(PropertyChangeListener listener ){
_changesupport.addPropertyChangeListener(listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener){
_changesupport.removePropertyChangeListener( listener );
}
private boolean _val = false;
private final PropertyChangeSupport _changesupport = new PropertyChangeSupport(this);
}
Run Code Online (Sandbox Code Playgroud)
这是Swing中的常见模式,您可以使用PropertyChangeSupport来简化对象的创建,您可以在其上观察和侦听属性更改.使用这些类,您可以注册一个PropertyChangeListener来处理结果的PropertyChangeEvent.
| 归档时间: |
|
| 查看次数: |
3263 次 |
| 最近记录: |