如何更改ScrolledComposite的水平滚动增量?

时间:2009-05-13 15:15:41

标签: java eclipse scroll swt

我有一个显示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 个答案:

答案 0 :(得分: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 ) );
        }
    }
});

答案 1 :(得分:2)

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

myScrolledComposite.getVerticalBar()setIncrement(10);

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我知道这比你要求的要多,但我强烈建议你查看具有平滑滚动功能的SWT animation toolkit。它会使你的应用程序更酷。

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