【发布时间】:2013-07-11 07:42:35
【问题描述】:
有没有办法为 ScrollPane 实现鼠标滚轮监听器?我看了几个选项:
- 视口似乎没有鼠标滚轮监听器
- 使用 gef 的 MouseWheelHelper 播放,但 y 值仅在我在 ScrollPane 内单击时发生变化,而不是在滚动鼠标滚轮时发生变化。虽然正在触发事件。
此外,ScrollPane 没有设计为垂直滚动条。
【问题讨论】:
有没有办法为 ScrollPane 实现鼠标滚轮监听器?我看了几个选项:
此外,ScrollPane 没有设计为垂直滚动条。
【问题讨论】:
好的,这里的神奇数字是 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 的定义:
根据事件类型,关注人数 绘制可能始终为零的待处理事件 在某些平台上,或行数或页数 使用鼠标滚轮滚动,或滚动的次数 鼠标被点击了
不确定这将如何在其他操作系统上发挥作用。
【讨论】: