首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在swt复合单击上获得正确的鼠标坐标

在swt复合单击上获得正确的鼠标坐标
EN

Stack Overflow用户
提问于 2014-02-23 00:48:17
回答 1查看 896关注 0票数 0

我正在用SWT图形实现棋子图形。板是一个外壳,以板图片作为背景,每个部件在合适的位置表示为复合材料(该复合材料具有该部件的图像)。我在shell中添加了一个MouseListener

我还有一个方法可以将鼠标坐标转换到棋盘中的某个位置(例如:在place [1,4]中单击表示选择方块)。

我在一个空的棋盘上测试了这个方法,它工作得很好,但是现在当我添加棋子时,当我点击一个棋子时,我无法从鼠标获得坐标。所以我给每个组合添加了相同的侦听器,但现在当鼠标单击它时,我会得到非常奇怪的坐标。看起来坐标是在合成图片的尺度上,而不是在外壳上。现在我的平移方法在空格点击上工作得很好,但在非空格点击上得到了非常奇怪的结果。

我应该怎么做才能修复它?如何在线路板外壳比例中获得复合点击坐标?

EN

回答 1

Stack Overflow用户

发布于 2014-02-23 21:11:56

您可以通过shell.toControl()方法将所有显示坐标(鼠标单击发生的位置)转换为相对于外壳的坐标。例如,

代码语言:javascript
复制
Display display = new Display();
Shell shell = new Shell(display);
....

    @Override
    public void mouseDoubleClick(MouseEvent e) {
        // Translates display co-ord to shell co-ord.
        shell.toControl(display.getCursorLocation());   
}

或者通过composite.toDisplay(Point compositeCoOrd)将所有合成坐标标准化为显示坐标,然后相对于外壳转换显示坐标。

当我不得不解决与您的问题类似的问题时,我偶然发现了这两个方便的方法。希望这能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21957252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档