Eclipse SWT:如何禁用鼠标滚轮上的滚动复合滚动

Posted

技术标签:

【中文标题】Eclipse SWT:如何禁用鼠标滚轮上的滚动复合滚动【英文标题】:Eclipse SWT: How to disable scrolledcomposite scrolling on mousewheel 【发布时间】:2014-08-23 01:26:27 【问题描述】:

所以我有

A Part with :(布局细节我就不说了,只是为了展示我的设置)

sc = new ScrolledComposite(parent, SWT.V_SCROLL | SWT.H_SCROLL);
    sc.setExpandHorizontal(true);
    sc.setExpandVertical(true);
    drawingPane = new Composite(sc, SWT.NONE);
    drawingPane.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_BLACK));
    sc.setContent(drawingPane);

    paintCanvas = new Canvas(drawingPane, SWT.NO_REDRAW_RESIZE | SWT.NO_BACKGROUND);

当我将MouseWheelListener 添加到画布时,每次事件发生时,ScrolledComposite 的垂直滚动条也会对其做出反应。

这有点烦人。我试过Solution of this Question。但问题是画布是事件的来源,这是正确的,我需要它。

问题更多的是如何禁止 MouseEvent 传递给 ScrolledComposite? 我也尝试禁用滚动条,但这不切实际,因为我在代码中没有找到可以在之后重新启用它的地方。看起来滚动是在其他任何事情之后触发的(例如我的画布的重绘)。

【问题讨论】:

【参考方案1】:

更多代码会有所帮助。无论如何,您可以尝试以下方法:

paintCanvas.addListener(SWT.MouseVerticalWheel, new Listener() 

    @Override
    public void handleEvent(Event event) 

        event.doit = false;
    
);

但我认为这不会起作用,因为 MouseEvents 不是 TraverseEvents。我无法用你的代码 sn-p 自己测试它。

【讨论】:

以上是关于Eclipse SWT:如何禁用鼠标滚轮上的滚动复合滚动的主要内容,如果未能解决你的问题,请参考以下文章

html 禁用鼠标滚轮对网页滚动条的控制怎么实现?

使用鼠标滚轮时如何加快 JScrollPane 中的滚动速度?

在Flash元素中使用鼠标滚轮时禁用文档滚动

在信息窗口中使用 Google Maps v3 禁用鼠标滚轮缩放

php Beaver Builder页面中的FacetWP单一地图 - 使用ACF地图数据(并禁用鼠标滚轮滚动)

使用鼠标滚轮在桌面上的 Sencha Touch 应用程序中滚动