我正在使用SWT小部件编写Java应用程序.我想在某个事件发生时更新某些小部件的状态(例如,更新数据模型的状态).
Java中是否存在类似于Cocoa的NSNotificationCenter的东西,我可以在其中注册一个对象来监听通知事件并对它们做出响应,以及让其他对象"触发"通知?
好吧,假设您的计算机开始扫描时,以及完成扫描时(不要担心加载程序是什么,或扫描的内容),您希望程序的某些部分得到通知,这些是来自我上一份工作中的一些代码.你定义一个接口,称之为"ScanListener",就像
public interface ScanListener { public void scanStarted(); public void scanCompleted(); }
现在Loader为你的其他代码定义了一个注册回调的方法,比如
public void addScanListener(ScanListener listener) { listeners.add(listener); }
Loader在开始扫描时执行以下代码
for (ScanListener listener : listeners) { listener.scanStarted(); }
当它完成时,它与listener.scanCompleted()做同样的事情;
需要通知这些事件的代码实现该接口(自身或内部类),并调用"loader.addScanListener(this)".它的scanStarted()和scanCompleted()方法在适当的时候被调用.您甚至可以使用带参数和/或返回结果的回调来执行此操作.全取决于你.