E4 RCP 属性改变监听器模式
2012-03-29 11:24
246 查看
开场白:
几次想写关系E4项目的文章,但是几次都因为语言组织不顺畅,愤怒之下,直接把网页给关。导致一直没写成。这次坚持吧。文笔有点烂,哈哈。
E4的介绍我这里就不做多余的介绍了,网上面一大堆,想了解的可以去看看。推荐一个网站:http://www.vogella.de/eclipse.html 许多可以借鉴的地方。
E4的安装方法在http://www.vogella.de/eclipse.html中也是有的,我就不重复造轮子啦。
其实RCP 属性改变监听器模式网上一大堆,但是这个东西确实起到了很大的作用,也算是自己E4 RCP文章的一个开始吧。
正题:
属性改变监听器模式,从字面意思上的理解可以理解为当一方属性改变后,另一方做出反应。
首先创建属性改变监听器模式的一个插件,提供注册、删除、以及传播。代码如下:
其实说白了,就是将需要进行交互的界面保存在一个集合中,并且实现IPropertyChangeListener接口,在传播时,遍历这个集合,调用它们所实现的接口方法。
传播消息时,需要一个标识,例如标识为:'张三可以吃饭了',通知所有人,但是只有张三可以吃饭。
又例如标识为:'大家可以吃饭了',通知所有人,那么所有人都可以吃饭了。
并且在传播时,可以另带参数:就上面的例子,张三可以吃饭了,并且给他加个鸡腿。initAndInvoke('张三可以吃饭了','鸡腿');
1.创建插件。提供注册,删除,传播方法。
2.需要传播的视图实现IPropertyChangeListener接口,注册视图本身。
3.传播消息。
并不是所有视图都需要实现IPropertyChangeListener接口,这样说吧:传播接收方需要注册自己才能接收到消息,传播方就没必要注册自己了。
本来想写一个本来的小教训的,但是突然发现我这个教训有点低级,就不写了,呵呵。
几次想写关系E4项目的文章,但是几次都因为语言组织不顺畅,愤怒之下,直接把网页给关。导致一直没写成。这次坚持吧。文笔有点烂,哈哈。
E4的介绍我这里就不做多余的介绍了,网上面一大堆,想了解的可以去看看。推荐一个网站:http://www.vogella.de/eclipse.html 许多可以借鉴的地方。
E4的安装方法在http://www.vogella.de/eclipse.html中也是有的,我就不重复造轮子啦。
其实RCP 属性改变监听器模式网上一大堆,但是这个东西确实起到了很大的作用,也算是自己E4 RCP文章的一个开始吧。
正题:
属性改变监听器模式,从字面意思上的理解可以理解为当一方属性改变后,另一方做出反应。
首先创建属性改变监听器模式的一个插件,提供注册、删除、以及传播。代码如下:
// A public method that allows listener registration public void addPropertyChangeListener(IPropertyChangeListener listener) { if (!myListeners.contains(listener)) myListeners.add(listener); } // A public method that allows listener registration public void removePropertyChangeListener(IPropertyChangeListener listener) { myListeners.remove(listener); } public void initAndInvoke(String property, Object obj) { // Post Invocation, inform listeners for (Iterator<IPropertyChangeListener> iter = myListeners.iterator(); iter.hasNext();) { IPropertyChangeListener element = (IPropertyChangeListener) iter.next(); element.propertyChange(new PropertyChangeEvent(this,property, null, obj)); } }
其实说白了,就是将需要进行交互的界面保存在一个集合中,并且实现IPropertyChangeListener接口,在传播时,遍历这个集合,调用它们所实现的接口方法。
传播消息时,需要一个标识,例如标识为:'张三可以吃饭了',通知所有人,但是只有张三可以吃饭。
又例如标识为:'大家可以吃饭了',通知所有人,那么所有人都可以吃饭了。
并且在传播时,可以另带参数:就上面的例子,张三可以吃饭了,并且给他加个鸡腿。initAndInvoke('张三可以吃饭了','鸡腿');
1.创建插件。提供注册,删除,传播方法。
2.需要传播的视图实现IPropertyChangeListener接口,注册视图本身。
3.传播消息。
并不是所有视图都需要实现IPropertyChangeListener接口,这样说吧:传播接收方需要注册自己才能接收到消息,传播方就没必要注册自己了。
本来想写一个本来的小教训的,但是突然发现我这个教训有点低级,就不写了,呵呵。
相关文章推荐
- rcp 监听属性改变
- 监听textView的属性的改变,用通知,代理不好用
- RecyclerView 横向列表 及 adapter 打造 item监听 改变元素属性
- Vue2 监听属性改变watch的实例代码
- Swift——监听属性的改变
- 【用户交互】APP没有退出前台但改变系统属性如何实时更新UI?监听系统广播,让用户交互更舒心~
- Vue2 监听属性改变watch
- 解决使用属性动画没有效果,监听发现属性值未发生改变问题
- Lua模仿类似观察者模式的监听变量改变自动刷新
- 监听属性的改变
- ios观察者设计模式。(在一个类监听另一个类属性的变化时响应)
- Android初学习 - 在Activity中监听屏幕属性改变用来控制是否全屏(隐去status bar)
- 监听元素属性改变事件的方法
- KVC 监听某对象属性值的改变
- html中input标签只读属性和内容改变事件监听
- swift中提供属性监听器,可以监听属性的改变
- ios-ASIHTTPRequest下载与进度条以及用观察者模式来监听进度条属性
- iOS:使用代理模式监听开关状态改变事件
- 17.swift怎么监听该属性的改变
- RxSwift 中监听对象属性改变的方式小结:rx_observe, PublishSubject 和 Variable