2014-07-02 115 views
0

,所以我有Eclipse的SWT:如何禁用鼠标滚轮scrolledcomposite滚动

与A部分:(我将不遗余力你的布局细节,它只是为了显示我的设置)

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到Canvas,每次事件发生时,ScrolledComposite的垂直滚动条也对它作出反应。

这是一种讨厌。我试过Solution of this Question。但事情是帆布是事件的来源,这是正确的,我需要它。

问题是我怎么能禁止MouseEvent传递给ScrolledComposite? 我也尝试禁用滚动条,但这并不实用,因为我没有在代码中找到任何地方以便之后重新启用它。因为滚动似乎在其他事情之后触发(比如我的画布重绘)。

回答

1

多一点代码会有帮助。无论如何,你可以尝试以下方法:

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

    @Override 
    public void handleEvent(Event event) { 

     event.doit = false; 
    } 
}); 

但我不认为这会工作,因为MouseEventsTraverseEvents。我无法用你的代码片段对自己进行测试。