ScrollPane鼠标滚轮监听器

时间:2013-07-12 17:13:26

标签: eclipse draw2d

有没有办法为ScrollPane实现鼠标滚轮监听器?我看了几个选项:

  • 视口似乎没有鼠标滚轮侦听器
  • 使用gef的MouseWheelHelper播放,但y值仅在我在ScrollPane中单击时更改,而不是在滚动鼠标滚轮时更改。虽然事件正在被解雇。

此外,ScrollPane没有垂直滚动条设计。

1 个答案:

答案 0 :(得分:0)

好的,这里的幻数是org.eclipse.swt.widgets.Event.count。此数字表示“使用鼠标滚轮滚动的行数或页数”。结合这个和MouseWheelHelper接口,我能够使用鼠标滚轮进行滚动:

public class MyEditPart extends TreeEditPart implements MouseWheelHelper{
private static final int SCROLL_OFFSET = 10;
...
    ...
@Override
public void handleMouseWheelScrolled(Event event) {
    pane.scrollVerticalTo(pane.getViewport().getVerticalRangeModel().getValue() + (event.count * SCROLL_OFFSET));
}

}

通过更改SCROLL_OFFSET可以控制视口滚动的速度,这很简洁。

唯一要检查的是Event.count的定义:

  

取决于事件类型,以下数量      绘制待处理的事件,可能始终为零      在某些平台上,或者行数或页数      使用鼠标滚轮滚动,或者滚动的次数      鼠标已被点击

不确定这将如何在其他操作系统上播放。