当对象的状态发生变化时,在Java中触发事件

我有一个Java对象,其状态随着时间的推移而变化。 当对象中的一个字段达到某个值时,我希望触发一个外部事件。

我知道Swing通过Listeners处理这个模式 – 我在这个项目中使用Swing – 但是我不确定哪种Listener会适用于这个案例。 用户不会更改对象的状态,并且监听器似乎仅由用户的操作触发。

编辑 :我正在监视的对象本身不是Swing组件 – 它在主线程的后台运行。

您可能希望查看java.util.Observable ,它是专为此目的而设计的。

这是关于Observer和Observable的JavaWorld教程:

该状态是否被用户改变实际上并不重要。 您可以从更改状态的方法调用侦听器回调,并确保只能通过该方法更改对象的状态:

class A { public void changeState(State newState) { state = newState; for (SomeEventListenerInterface el : listeners) { el.nofity(this, newState); } } } 

而听众似乎只是由用户的行为触发。

不总是。 例如,当您更改许多Swing组件(背景,字体等)的属性时,会触发PropertyChangeEvent。

我建议你也可以使用这个活动。 有关示例,请阅读Swing教程中有关如何编写属性更改侦听器的部分。