代码之家  ›  专栏  ›  技术社区  ›  chimeracoder

对象状态更改时触发Java中的事件

  •  4
  • chimeracoder  · 技术社区  · 15 年前

    我知道Swing通过监听器处理这个模式——我在这个项目中使用Swing——但是我不确定什么样的监听器会应用到这个案例中。用户不会更改对象的状态,侦听器似乎只由用户的操作触发。

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

    3 回复  |  直到 15 年前
        1
  •  5
  •   Grodriguez    15 年前

    你可能想看看 java.util.Observable ,正是为了这个目的而设计的。

        2
  •  2
  •   Vijay Mathew Chor-ming Lung    15 年前

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

    class A {
        public void changeState(State newState) {
             state = newState;
             for (SomeEventListenerInterface el : listeners) {
                  el.nofity(this, newState);
             }
        }
    }
    
        3
  •  1
  •   camickr    15 年前

    而侦听器似乎只由用户的操作触发。

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

    我建议你也可以参加这个活动。阅读Swing教程中关于 How to Write a Property Change Listener

    推荐文章