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

时间:2010-11-09 05:03:31

标签: java swing listener

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

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

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

3 个答案:

答案 0 :(得分:5)

您可能需要查看专为此目的而设计的java.util.Observable

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

答案 1 :(得分:2)

该状态是否被用户改变或者无关紧要。您可以从更改状态的方法调用侦听器回调,并确保只能通过该方法更改对象的状态:

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

答案 2 :(得分:1)

  

并且监听器似乎仅由用户的操作触发。

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

我建议您也可以使用此活动。请阅读How to Write a Property Change Listener上的Swing教程中的部分,以获取示例。