【发布时间】:2013-09-10 20:48:59
【问题描述】:
我有一个用 GEF 编写的图形编辑器。在此编辑器中,可以拖放元素并通过拖放特定锚点来创建连接。
一切正常,除了当用户拖动东西时图表不会自动滚动。
我希望当用户在拖动某些东西时到达图表的一侧时图表会自动滚动。
GEF 是否支持这样的功能?应该调用哪个类/设置器来启用它?
如果不直接支持,如何实现?
【问题讨论】:
标签: java eclipse eclipse-gef
我有一个用 GEF 编写的图形编辑器。在此编辑器中,可以拖放元素并通过拖放特定锚点来创建连接。
一切正常,除了当用户拖动东西时图表不会自动滚动。
我希望当用户在拖动某些东西时到达图表的一侧时图表会自动滚动。
GEF 是否支持这样的功能?应该调用哪个类/设置器来启用它?
如果不直接支持,如何实现?
【问题讨论】:
标签: java eclipse eclipse-gef
自从我上次摆弄 GEF 以来已经有一段时间了。
拖放根本不起作用还是仅在负坐标方向上不起作用? 你用的是什么布局?
IIRC,有不同的布局,其中一种(FreeForm?)支持负坐标,所以如果您只是遇到负坐标问题,您可以尝试更改布局。
这是一个Scrolling Graphical editor 的示例(作者说;)),它可能会给你一个很好的提示。
还有一个名为 org.eclipse.gef.ui.parts.ScrollingGraphicalViewer 的类也可能有所帮助。
不过,只是提示,因为我不知道你的代码。
【讨论】:
第一步是让你的画布可滚动。这在in this book,第 96 - 101 页进行了解释。
假设您已经在FigureCanvas 上绘制图形并且您正在使用FreeformFigures 和FreeformLayer,您可以执行以下操作:
在Figure 的EditPart 中添加MouseMoveListener。每次检测到拖拽时,在mouseDragEvent方法中,用getViewer().reveal(EditPart.this)显示你的身影。
这将导致您的Figure 在被拖动时始终显示出来。
【讨论】: