我目前正在使用Eclipse GEF构建编辑器。可以通过编辑器添加新零件并重命名。
但是我对元素的移动有一点问题。当用鼠标拖动它们时,当我释放鼠标并且元素不与另一个元素碰撞时它们不会被移动
元素的位置存储在EMap
中(模型由EMF制作)。视图中的更改将使用地图的put
方法保存。
在使用调试器时,我注意到该命令已执行,但视图尚未刷新。
我在模型中添加了一个适配器,但是没有从系统中调用它notifyChanged
。
public class ViewAdapter implements Adapter {
@Override
public void notifyChanged(Notification notification) {
refreshVisuals();
}
}
ViewAdapter
已在EditPart
的激活方法中注册。
它可能是什么?
答案 0 :(得分:2)
当您使用地图时,普通Adapter
界面将无效,因为它只会侦听地图条目的添加或删除。
如果您想收听地图元素的更改,则应使用EContentAdapter
代替:
public class ViewAdapter extends EContentAdapter {
@Override
public void notifyChanged(Notification notification) {
refreshVisuals();
super.notifyChanged(notification);
}
}
调用super方法非常重要,因此地图条目的通知会被提供给地图本身。