2

我有一个用 GEF 编写的图形编辑器。在此编辑器中,可以通过拖放特定锚点来拖放元素并创建连接。

一切正常,除了当用户拖动东西时图表不会自动滚动。

我希望当用户在拖动某些东西时到达它的一侧时,图表会自动滚动。

GEF 是否支持这样的功能?应该调用哪个类/设置器来启用它?

如果不直接支持,如何着手实现呢?

4

2 回答 2

3

第一步是让你的画布可滚动。本书96-101页对此进行了解释。

假设您已经在 a 上绘制图形FigureCanvas并且您正在使用FreeformFigures 和FreeformLayer,您可以执行以下操作:

MouseMoveListener在您FigureEditPart. 每次检测到拖动时,在该mouseDragEvent方法中,用 显示您的图形getViewer().reveal(EditPart.this)

这将导致您Figure在被拖动时始终被显示出来。

于 2013-09-10T12:48:59.247 回答
3

自从我上次摆弄 GEF 以来已经有一段时间了。

拖放根本不起作用还是仅在负坐标的方向上起作用?你用的是什么布局?

IIRC,有不同的布局,其中一种(FreeForm?)支持负坐标,所以如果你只是遇到负坐标的问题,你可以尝试改变布局。

这是一个滚动图形编辑器的示例(作者说;))可能会给您一个很好的提示。

还有一个名为org.eclipse.gef.ui.parts.ScrollingGraphicalViewer的类也可能有所帮助。

不过,只有提示,因为我不知道您的代码。

于 2013-09-05T05:36:46.037 回答