我已经对此进行了一段时间的研究,并且发现了很少有关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);
}
答案 0 :(得分:2)
是的,你是对的。 "计数"这里表示滚动行数(Windows中默认为3或-3)
答案 1 :(得分:1)
可以在画布上使用MouseWheelListener;唯一的事情是事件仅在具有焦点的组件上触发。
画布通常不会获得焦点,除非你向它添加一个键侦听器(即使是一个空的)。
(我知道这个问题很老了,但是面对同样的问题谷歌指示我,所以这里有一个解决方案)。