【问题标题】:ScrollPane mouse wheel listenerScrollPane 鼠标滚轮监听器
【发布时间】:2013-07-11 07:42:35
【问题描述】:

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

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

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

【问题讨论】:

    标签: eclipse draw2d


    【解决方案1】:

    好的,这里的神奇数字是 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 的定义:

    根据事件类型,关注人数 绘制可能始终为零的待处理事件 在某些平台上,或行数或页数 使用鼠标滚轮滚动,或滚动的次数 鼠标被点击了

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-20
      • 2014-12-13
      相关资源
      最近更新 更多