滚动窗口类:org.eclipse.swt.custom.ScrolledComposite
实现方法:
1.实例化ScrolledComposite
ScrolledComposite sc = new ScrolledComposite(shell,SWT.V_SCROLL|SWT.H_SCROLL|SWT.BORDER);
...//设置其他属性,如果父类shell没有使用layout那么不要忘记设置sc.setBounds
sc.setExpandHorizontal(true);
sc.setExpandVertical(true);
这两个属性设置了横向纵向可以扩展,即允许滚动的方向。
2.实例化内容,在这里我们使用的是Composite
Composite c = new Composite(shell,SWT.NONE);
....//设置你的 Composite属性
3.向ScrolledComposite中添加内容
sc.setContent(c);
//以上代码是,只需要执行一次即可,相当于初始化
4.滚动代码,需要在每一个可能改变滚动内容(c)的地方被调用,最好能写成方法方便调用。
sc.setMinSize(maxCWidth,maxCHeight);//将改变后滚动内容(c)的大小作为sc的最小尺寸,不要忘记长宽各稍微比实际大小大一点,这样滚动的效果比较好
c.setSize(c.computeSize(SWT.DEFAULT, SWT.DEFAULT));//这句非常重要起到重新计算滚动条的作用
OK,可是实验一下你的代码了。
BTW:如果需要得到c在sc中已经滚动的偏移量请调用sc.getOrigin()