2014-07-02 151 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。我無法用你的代碼片段對自己進行測試。