1

我有一个显示 ScrolledComposite 的应用程序。用户抱怨水平滚动增量太细,即每次单击水平滚动箭头当前一次移动条一个像素。他们希望单独的点击引起更大的水平移动。有人可以解释我如何实现这个吗?代码片段如下:

ScrolledComposite myScrolledComposite = new ScrolledComposite(parent, 
        SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);

if ( myScrolledComposite == null) {
    throw new NullPointerException("ScenePreView.java:  " + 
            "Method createPartControl()  " + 
            "ScrolledComposite myScrolledComposite == null."); 
}

Composite myComposite = new Composite(myScrolledComposite, SWT.NONE);

if ( myComposite == null) {
    throw new NullPointerException("ScenePreView.java:  " + 
            "Method createPartControl()  " + 
            "Composite myComposite == null."); 
}

myScrolledComposite.setContent(myComposite);
4

4 回答 4

3

这应该可以很好地工作并提供可用的默认值。当 ScrolledComposite 中的控件调整大小时,它应该会自动更新。

myComposite.addControlListener( new ControlAdapter() {
    @Override
    public void controlResized( ControlEvent e ) {
        ScrollBar sbX = scrolledComposite.getHorizontalBar();
        if ( sbX != null ) {
            sbX.setPageIncrement( sbX.getThumb() );
            sbX.setIncrement( Math.max( 1, sbX.getThumb() / 5 ) );
        }
    }
});
于 2009-08-25T21:14:42.307 回答
2

从组合中获取滚动条并设置它的增量。

myScrolledComposite.getVerticalBar().setIncrement(10);

于 2009-05-13T15:58:54.167 回答
0

使用 SWT Scrollbar 类的 setIncrement() 方法。这使您可以修改按下箭头按钮时滚动区域的移动量。 请参阅 SWT 的 API 参考

于 2009-05-13T15:53:58.047 回答
0

我知道这超出了您的要求,但我强烈建议您查看具有平滑滚动实现的SWT 动画工具包。它将使您的应用程序更酷。

您可以查看它并查看来源 - 这是一个很好的例子(但有点高级)如何使用滚动。

于 2009-05-13T16:04:10.180 回答