我有一个用GEF编写的图形编辑器。在这个编辑器中,可以拖放元素并通过拖放特定的锚点来创建连接。
一切正常,但是当用户拖动周围的图表时,图表不会自动滚动。
我希望当用户在拖动某些内容时到达侧面时,图表会自动滚动。
GEF支持这样的功能吗?应该调用哪个类/ setter来启用它?
如果没有直接支持,如何继续实现呢?
答案 0 :(得分:3)
自从我上次摆弄GEF以来已经有一段时间了。
拖放根本不起作用或只是在负坐标的方向上? 你使用什么布局?
IIRC,有不同的布局,其中一个(FreeForm?)支持负坐标,所以如果你只是有负坐标的问题,你可以尝试改变布局。这是一个Scrolling Graphical editor(作者说;))的例子,它可能会给你一个很好的提示。
还有一个名为 org.eclipse.gef.ui.parts.ScrollingGraphicalViewer 的类也可能有所帮助。
但是,只有提示,因为我不知道你的代码。
答案 1 :(得分:3)
第一步是使画布可滚动。这解释为in this book,页面 96 - 101 。
假设您已经在FigureCanvas
上绘制了数据,而您正在使用FreeformFigure
和FreeformLayer
,则可以执行以下操作:
在MouseMoveListener
的{{1}}上添加Figure
。每次检测到拖动时,在EditPart
方法中,使用mouseDragEvent
显示您的数字。
这会导致getViewer().reveal(EditPart.this)
在被拖动时始终不断显示。