SWT MouseWheelListener

时间:2011-10-24 20:49:41

标签: java swt listener mouse mousewheel

我已经对此进行了一段时间的研究,并且发现了很少有关SWT MouseWheelListeners的信息。想看看你们是否遇到过这种情况,或者找到了可以帮助解释它们的链接。

我正在尝试查找有关SWT MouseWheelListener的信息以及如何正确使用它。我试图使用MouseWheelListener在复合材料上创建缩放效果,复合材料在其上绘制多个复合对象。

本质上,当通过以正常尺寸的两倍重绘画布来放大放大时,以比例布局重新绘制画布上的对象,并将焦点移动到带轮的点。

我的问题如下: 是否可以在Composite上使用MouseWheelListener,或者只是滚动复合对象的监听器(我知道方法在那里;当我尝试滚动对象时(包括在调试时)没有发生任何事情? 如果可能,如何在MouseScrolledEvent上启动Composite? 如何区分车轮向上和向下轮(e.count为正向上为负向下向下)?

代码如下:

public TagCloudComposite(Composite parent, int style) {
    super(parent, style);
    addMouseWheelListener(new MouseWheelListener() {
        public void mouseScrolled(MouseEvent e) {
            int count = e.count;
            System.out.println(count);
            // int direction = (Math.abs(count) > 0) ? UP : DOWN;
            // changeBackground(direction);
        }
    });
    this.setLayout(new FillLayout());
    this.setMinWeight(1);
    this.setMaxWeight(100);
    c = new Composite(this, SWT.NONE);
    this.setSize(300, 200);
}

2 个答案:

答案 0 :(得分:2)

是的,你是对的。 "计数"这里表示滚动行数(Windows中默认为3或-3)

答案 1 :(得分:1)

可以在画布上使用MouseWheelListener;唯一的事情是事件仅在具有焦点的组件上触发。

画布通常不会获得焦点,除非你向它添加一个键侦听器(即使是一个空的)。

(我知道这个问题很老了,但是面对同样的问题谷歌指示我,所以这里有一个解决方案)。