1

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

  • 视口似乎没有鼠标滚轮监听器
  • 使用 gef 的 MouseWheelHelper 播放,但 y 值仅在我在 ScrollPane 内单击时发生变化,而不是在滚动鼠标滚轮时发生变化。虽然事件正在被触发。

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

4

1 回答 1

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 的定义,它说:

取决于事件类型、未决的后续绘制事件的数量(在某些平台上可能始终为零),或者使用鼠标滚轮滚动的行数或页面数,或者鼠标被单击的次数

不确定这将如何在其他操作系统上发挥作用。

于 2013-07-12T18:31:55.263 回答