GEF 查看器放置位置

GEF viewer drop location

我的 GEF 图形查看器有一个 MyTemplateTransferDropTargetListener。

MyTemplateTransferDropTargetListener 覆盖 drop() 方法:

@Override
public void drop(DropTargetEvent event) {
        Point eventDropLocationPoint = this.getDropLocation();
        }

getDropLocation() 在编辑器屏幕较小或等于 eclipse 编辑器页面大小时运行正常。但是当 GEF 编辑器的屏幕较大并且我向下或向右滚动时,getDropLocation() 将无法获得相对于我的 GEF 查看器的特定位置。

你知道解决这个问题的方法吗?

您的 Canvas 控件应占据编辑器组合提供给它的所有 space。调整编辑器 window 大小时,canvas 大小应等于 window(编辑器合成)的大小,然后根图形的大小应等于canvas。 从屏幕截图看来,Canvas 控件没有 window/editor 组合的大小,或者根图形的大小不正确。灰色的矩形边框大概是限制了根图或者canvas。 我会调试 Draw2D LightweightSystem#controlResized()(第 118 行),看看它是否在您调整编辑器 window 大小时被调用,检查 canvas 大小和根图大小是否正确并等于 window尺寸。 (另请注意,放置目标侦听器仅在 canvas 控件上。)