我创建了一个ScrollingGraphicalViewer来显示我的数字,但没有数字显示。 我调试了源代码,似乎创建了所有对象(数字,编辑部分,模型),没有例外。为什么数字不显示?
由于代码很大并传播了许多Java文件,因此我简要描述了我所做的事情。
创建模型对象。在我的模型中,有两种元素,目录和文件。目录可能包含其他目录或文件。
图形对象。我创建了两种图形,一种用于目录,另一种用于文件。 目录图可以有嵌套目录和文件的嵌套数字。
editpart对象。对于每种模型元素,即目录和文件,用于连接模型和图形之间的关系。
一个editpart工厂对象,用于创建每个editpart对象。
创建ScrollingGraphicalViewer对象(查看器)。并在viewer上调用以下方法:viewer.createControl(),viewer.setRootEditPart(),viewer.setEditPartFactory和viewer.setContents()。
有什么遗漏? 任何线索和评论都会受到关注。
感谢。
答案 0 :(得分:0)
覆盖refreshVisuals()
中的EditPart
即可。这是根据模型决定对约束更改做出反应的正确位置。您还必须设置相对于父EditPart
(及其图形的FreeformLayout)的数字约束,因此FileEditPart
(参见Eclipse GEF论坛上的交叉发布)类似refreshVisuals()
中的以下内容。
getParent().setLayoutConstraint(this, figure, layout);
layout
这里必须是draw2d Rectangle
。您可以通过为x
和y
提供值来计算,getFigure().getPreferredSize().width
为layout.width
和dto。高度。
对于基本的GEF用法 - 这是一个案例 - 我建议你看一下Rubel等人的GEF Book。