【发布时间】:2016-04-12 17:54:27
【问题描述】:
背景:我正在尝试以编程方式在 SWT 表上创建上下文菜单。我正在以编程方式执行此操作,因为我需要根据单击的单元格而不是行项来隐藏/显示菜单。
我打算使用 Event 类中的 x,y 坐标来查找被单击的单元格,因此我同时捕获了未键入的 MouseDown 事件和未键入的 MenuDetect 事件。我将日志消息放入事件处理程序中,以便更好地了解发生了什么。这是我的代码:
tree.addListener(SWT.MouseDown, new Listener() {
@Override
public void handleEvent(final Event event) {
System.out.println("Mouse down: (" + event.x + ", " + event.y + ")");
handleMouseDown(event);
}
});
tree.addListener(SWT.MenuDetect, new Listener() {
@Override
public void handleEvent(final Event event) {
System.out.println("Menu Detect: (" + event.x + ", " + event.y + ")");
handleMenuDetect(event);
}
});
同样的点击,我希望看到同样的结果,然而,当我点击一列单元格时,我的输出如下:
鼠标按下:(334, 11) 菜单检测:(1270, 255)
鼠标按下:(331, 37) 菜单检测:(1267, 281)
鼠标按下:(329, 55) 菜单检测:(1265, 299)
鼠标按下:(324, 77) 菜单检测:(1260, 321)
鼠标按下:(324, 100) 菜单检测:(1260, 344)
这里发生了什么?他们不是指的是同一个确切的点吗?他们是在计算不同来源的 x,y 吗?
【问题讨论】: