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:如何禁用鼠标滚轮上的滚动复合滚动的主要内容,如果未能解决你的问题,请参考以下文章
使用鼠标滚轮时如何加快 JScrollPane 中的滚动速度?
在信息窗口中使用 Google Maps v3 禁用鼠标滚轮缩放