WEB开发网
开发学院软件开发Java GEF实践总结(二)常见基础性问题 阅读

GEF实践总结(二)常见基础性问题

 2009-09-06 00:00:00 来源:WEB开发网   
核心提示:一. 怎么通过model创建对应的EditPart? EditPartFactory :通过model创建对应EditPart的工厂类,就和jface.TableView一样,GEF实践总结(二)常见基础性问题,能知道通过model得到TableItem,和jface.TreeViewer一样,如果model的属性发生

一. 怎么通过model创建对应的EditPart?

EditPartFactory :通过model创建对应EditPart的工厂类。

就和jface.TableView一样,能知道通过model得到TableItem。和jface.TreeViewer一样,能通过model知道要生成对应的TreeItem一样的功效。

Java代码

@Override 
public EditPart createEditPart(EditPart context, Object model) { 
EditPart part = null; 
if (model instanceof DiagramModel) { 
part = new DiagramEditPart(); 
} else if (model instanceof RectModel) { 
part = new RectEditPart(); 
} 
part.setModel(model); 
return part; 
}

二. EditPart怎么创建对应的Figure?

在EditPart中有一个方法必须实现,就是createFigure方法。

Java代码

@Override 
protected IFigure createFigure() { 
RectFigure figure = new RectFigure(); 
figure.setModel((BaseModel) this.getModel()); 
return figure; 
}

这样就把EditPart和对应的Figure关联起来了,知道如何通过EditPart创建出一个对应的Figure。

三. Model改变,如果对外通知?

Model中有PropertyChangeSupport,外部可以往model中注册PropertyChangeListener,也就是对模型属性改变的监听器,如果model的属性发生了改变,那么就会对所有的listener通知这个属性变化。通知内容包括改变的属性名称、老的值、新的值。

Java代码

protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) { 
changeSupport.firePropertyChange(propertyName, oldValue, newValue); 
} 
public void setX(int x) { 
int oldX = this.x; 
this.x = x; 
this.firePropertyChange(“X”, oldX, x); 
} 

1 2 3  下一页

Tags:GEF 实践 总结

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接