SWT鼠标事件捕获

今天写代码,使用SWT。用两年没用Java写桌面程序了。使用VE自动生成一个SWT Shell。添加一个Canvas。设置鼠标事件。后来发现Canvas没有捕获鼠标事件!?

再三重复尝试,都不成功,Google,没有找到类似问题(也许是我不会搜)。

后测试,每次都是Shell 上的 Composite 捕获事件。难道是捕获顺序出错?

按理,应该和这个没有什么关系的。

继续尝试,发现只要改变窗口大小,Canvas 就可以捕获鼠标事件。

估计是初始化后没有显示地让Canvas 捕获事件有关系。

最后的解决方案:

改变初始化的顺序

private void createSShell() {
    sShell = new Shell();
    sShell.setText("OO");

     createComposite();
    sShell.setSize(new Point(411, 244));
    sShell.setLayout(new FillLayout());
}

 

改为

private void createSShell() {
    sShell = new Shell();
    sShell.setText("OO");
    sShell.setSize(new Point(411, 244));
    sShell.setLayout(new FillLayout());
    createComposite();
}

posted @ 2011-05-08 18:45  lsiyun  阅读(1019)  评论(0)    收藏  举报