eclipse 视图间通信

本文介绍了Eclipse中视图更新的两种主要方式:主动式和监听式。主动式更新依赖于主动方直接查找并修改目标视图;监听式则通过监听选择变化来更新视图内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

分为主动式和监听式

1.主动式

其本质 被动方不作改变,主动方通过 getViewSite().getPage().findView(VIEW_ID)找到要更新内容的view,然后对其做出相应的改变;

 

2.监听式

主动方在createPartControl(Composite parent)方法里加上getSite.setSelectionProvider(ISelectionProvider selectionProvider),

被动方中的view加入监听器,通常把它放在createPartControl(Composite parent)方法里。

 getSite().getPage().addPartListener(partListener);

 

像在eclipse 中属性视图并不直接感知可能被选择中的每个对象,实际上,该视图与内部情况无关,它仅监听活动的Workbench部分的中被选中的部分中的内容。如果被选择中的内容实现了或可以适配于IPropertySource接口,那么属性就会请求该对象(其本质 就是监听式)。

同时像按钮,combo,text也可被监听,只不过要把其对象包装成ISelection对象就可以了,然后再把它压入selectionProvider,而像tableviewer,treeviewer其对象并不是ISelection对象,其内部肯定有这个适配包装的过程的。

 setSelection(new StructuredSelection(element), true);

取得时侯,如下代码,相当于一个解析的过程,所以从另一个方面证明了把orignal对象压入tableviewer,treeviewer等中,其内必有一个包装适配的过程。但是源代码我没有完全看到,希望哪位看到通知我一下,谢谢了

  IStructuredSelection selection =
            (IStructuredSelection) event.getSelection();
   
          Object obj = selection.getFirstElement();

相关网站:http://www.blogjava.net/chengang
常见问题解答:http://www.blogjava.net/chengang/archive/2006/04/24/42868.html
随书光盘的代码下载:http://glchengang.gbaopan.com/

 

### 解决 `numpy` 1.24.4 中 `AttributeError: module 'numpy' has no attribute 'typeDict'` 当使用 `numpy` 1.24.4 版本并尝试调用不存在的属性 `typeDict` 时,可能会遇到 `AttributeError`。此问题通常源于某些第三方库或脚本期望旧版 `numpy` 的行为,在新版本中这些行为可能已被移除或更改。 #### 方法一:降级 `numpy` 版本 如果项目依赖于特定版本的 `numpy` 或者不兼容最新版本的功能变更,则可以考虑将 `numpy` 降级到更早的一个稳定版本: ```bash pip install numpy==1.19.5 ``` 这一步骤能够恢复那些被删除或重命名的方法和属性[^2]。 #### 方法二:更新其他依赖项 有时问题是由于不同软件包之间的版本冲突引起的。确保所有使用的库都是最新的,特别是与 `numpy` 密切关联的部分,比如 `scipy`, `matplotlib` 等。通过升级整个环境中的 Python 包来解决问题也是一种常见做法。 #### 方法三:调整代码逻辑 对于直接访问 `numpy.typeDict` 的场景,应该查找官方文档确认是否有新的推荐方式实现相同功能。例如,可以用内置的数据类型对象代替字典查询的方式处理数据转换操作。 #### 方法四:寻找替代方案 如果上述措施仍无法满足需求,那么评估是否有可能替换掉引发错误的具体部分,采用其他技术手段完成同样的任务也是一个选项。不过这种方法往往涉及较大的改动成本,需谨慎决定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值