所以我有
一部分:(我将为您提供布局细节,只是为了显示我的设置)
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的垂直滚动条也会对它做出反应。
这有点烦人。我试过了Solution of this Question。但事情是Canvas是事件的来源,这是对的,我需要它。
问题是如何禁止将MouseEvent传递给ScrolledComposite? 我也尝试禁用Scrollbar,但这不实用,因为我发现代码中没有地方可以在之后重新启用它。因为看起来滚动在其他任何事情之后被触发(例如重绘我的画布)。
答案 0 :(得分:1)
更多代码会有所帮助。无论如何,您可以尝试以下方法:
socket_create
但我认为这不会奏效,因为paintCanvas.addListener(SWT.MouseVerticalWheel, new Listener() {
@Override
public void handleEvent(Event event) {
event.doit = false;
}
});
不是MouseEvents
。我无法用你的代码片段为自己测试它。