代码之家  ›  专栏  ›  技术社区  ›  Dr. Faust

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

  •  1
  • Dr. Faust  · 技术社区  · 15 年前

    我有一个显示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 回复  |  直到 15 年前
        1
  •  3
  •   derBiggi    15 年前

    这应该可以很好地工作,并提供可用的默认值。当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 ) );
            }
        }
    });
    
        2
  •  2
  •   Wayne Beaton    15 年前

        3
  •  0
  •   Nicholas Hirras    15 年前

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

        4
  •  0
  •   zvikico    15 年前

    SWT animation toolkit 它实现了平滑滚动。这会让你的申请更酷。

    您可以查看它并查看源代码-这是一个很好的例子(不过,有点先进)如何发挥滚动。