ScrolledComposite设置滚动距离

首先说明的是:

为了用滚动面板最好用3个层次的Composite:

befComposite---滚动面板的直接父类;  scrolledComposite---滚动面板自己;inComposite--滚动面板的直接子类,用于存放各种子控件。

 

Java代码 

 收藏代码

  1. Composite befComposite= new Composite(shell, SWT.NONE);  
  2.   gridData = new GridData(GridData.FILL_BOTH);  
  3.   befComposite.setLayoutData(gridData);  
  4.   befComposite.setLayout(new FillLayout());//这个是必须的,就是滚动面板的直接父类 layout类型必须是:FillLayout对象  
  5.   
  6.   ScrolledComposite scrolledComposite = new ScrolledComposite(befComposite, SWT.H_SCROLL | SWT.V_SCROLL);  
  7.   scrolledComposite.setExpandHorizontal(true);  
  8.   scrolledComposite.setExpandVertical(true);  //这两句是设置水平和竖直滚动条可见的,也是必须的。  
  9.  Composite  inComposite= new Composite(scrolledComposite, SWT.NONE);  
  10.   gridData = new GridData(GridData.FILL_BOTH);  
  11.   inComposite.setLayoutData(gridData);  
  12.   inComposite.setLayout(new RowLayout());  
  13.   
  14.   scrolledComposite.setContent(inComposite);  
  15.   scrolledComposite.setMinSize(new Point(140, 680)); //这两句是指定滚动面板的内容及最小大小的,也是必须的,不然是没有滚动效果的  



然后就是对inComposite填充数据了,别忘了 动态填充数据后inComposite.layout();使数据动态呈现。

-------------------------------------------------------------------------------------

如果按以上步骤滚动条出现了,但是没有滚动效果,那么做如下处理:

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 

Java代码 

 收藏代码

  1. ScrollBar vb = scrolledComposite.getVerticalBar();// 控制垂直方向滚动增量  
  2.   vb.setIncrement(10);    
  3.   
  4.   inComposite.addMouseListener(new MouseAdapter(){  
  5.   
  6.    @Override  
  7.    public void mouseDown(MouseEvent e) {  
  8.     inComposite.setFocus();  
  9.    }  
  10.   });  


在正确设置的情况下,滚动面板的滚动条不能动时,原因:就是该滚动面板未获得焦点,只要手动之定义让其获得焦点点就可以了,上面的
 

Java代码 

 收藏代码

  1. public void mouseDown(MouseEvent e) {  
  2.     inComposite.setFocus();  
  3.    }  

只是其中的一种方法,可以是任意的监听,只要保证在鼠标滚动前 滚动面板或其直接子类 setFocus() 就可以了。

另外  vb.setIncrement(10);  是设置自定义的滚动幅度大小,可以根据需要自行设置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章