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);  是設置自定義的滾動幅度大小,可以根據需要自行設置。

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