所以我有
部分:(我不会为您提供布局细节,只是为了展示我的设置)
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/