2014-01-24 43 views
2

我有两个ScrolledComposite S和我同步其垂直滚动位置是这样的:设置ScrolledComposite的滚动条可见性为false SWT

final ScrollBar vScroll1 = canvasScroll.getVerticalBar(); 
final ScrollBar vScroll2 = titleScroll.getVerticalBar(); 

vScroll1.addSelectionListener(new SelectionAdapter() { 
    public void widgetSelected(SelectionEvent e) { 
     titleScroll.setOrigin(titleScroll.getOrigin().x, canvasScroll.getOrigin().y); 
    } 
}); 

vScroll2.addSelectionListener(new SelectionAdapter() { 
    public void widgetSelected(SelectionEvent e) { 
     canvasScroll.setOrigin(canvasScroll.getOrigin().x, titleScroll.getOrigin().y); 
    } 
}); 

这工作得很好,但它显示了两种ScrolledComposites滚动条。我只想要一个ScrolledComposite的滚动条是可见的,所以我把他们的能见度的一个错误:

vScroll2.setVisible(false); 

,没有任何效果。我还试图在没有SWT.V_SCROLL标志的情况下实例化ScrolledComposite,但运行上述代码时会导致空指针异常。滚动条确实需要在那里,我只是想让它看不见。那可能吗?

回答

4

简单的答案是:“不”。

如果您创建的ScrolledComposite没有SWT.H_SCROLLSWT.V_SCROLL,它无法滚动,即调用setOrigin(Point)或相关方法根本不会执行任何操作。

另一方面,如果您启用了滚动条,但想要隐藏它们,操作系统将会覆盖您的决定。滚动条由操作系统控制,这意味着操作系统将决定它们是否可见。在ScrollBar上调用setVisible(false)只不过是提示操作系统。它可能跟随或不...

对不起,是坏消息:\


可以尝试在其他Composite包裹ScrolledComposite,并迫使这一个“作物”的包含的ScrolledComposite的滚动条(通过改变它的大小),但这更多的是黑客攻击。

+0

至少现在我知道......谢谢。 – Hassan

+0

这是否包括隐藏的滚动条,除非被蒙上了阴影? – Core

+0

@Core使用悬停滚动条的操作系统也是如此。当考虑到SWT时,它们与正常的没有区别。 – Baz

相关问题