java - Eclipse SWT : How to disable scrolledcomposite scrolling on mousewheel

标签 java eclipse canvas swt listeners

所以我有

部分:(我不会为您提供布局细节,只是为了展示我的设置)

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);

当我向 Canvas 添加一个 MouseWheelListener 时,每次事件发生时,ScrolledComposite 的垂直滚动条也会对其使用react。

这有点烦人。我尝试了Solution of this Question 。但事实是, Canvas 是事件的来源,这是正确的,而且我需要它。

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

最佳答案

多一点代码会很有帮助。不管怎样,你可以尝试以下方法:

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

    @Override
    public void handleEvent(Event event) {

        event.doit = false;
    }
});

但我认为这不会起作用,因为 MouseEvents 不是 TraverseEvents。我无法用您的代码片段亲自测试它。

关于java - Eclipse SWT : How to disable scrolledcomposite scrolling on mousewheel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24527996/

相关文章:

java - 如何以编程方式检查 HTML 文档

java - 递归函数单独工作正常,但一起导致堆栈溢出错误

java - 通过 Eclipse 更新 tomcat 服务器上的文件

javascript - Canvas getImageData().data 返回半张图像

java - Libgdx 用纹理重构一个类

java - 如何从不可变对象(immutable对象)创建实例?

java - 在 eclipse 中更改导入类的属性

linux - 用于 eclipse 的 Docker 插件

javascript - 在 Canvas 中创建流畅的动画

javascript - Base64 图像数据不适用于 fabricjs 中的 loadfromJSON