`

SWT中 ScrolledComposite 滚动面板 “不可用” 等常见问题的简单解释

 
阅读更多
首先说明的是:

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

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

 
Composite befComposite= new Composite(shell, SWT.NONE);
  gridData = new GridData(GridData.FILL_BOTH);
  befComposite.setLayoutData(gridData);
  befComposite.setLayout(new FillLayout());//这个是必须的,就是滚动面板的直接父类 layout类型必须是:FillLayout对象

  ScrolledComposite scrolledComposite = new ScrolledComposite(befComposite, SWT.H_SCROLL | SWT.V_SCROLL);
  scrolledComposite.setExpandHorizontal(true);
  scrolledComposite.setExpandVertical(true);  //这两句是设置水平和竖直滚动条可见的,也是必须的。
 Composite  inComposite= new Composite(scrolledComposite, SWT.NONE);
  gridData = new GridData(GridData.FILL_BOTH);
  inComposite.setLayoutData(gridData);
  inComposite.setLayout(new RowLayout());

  scrolledComposite.setContent(inComposite);
  scrolledComposite.setMinSize(new Point(140, 680)); //这两句是指定滚动面板的内容及最小大小的,也是必须的,不然是没有滚动效果的


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

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

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

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
ScrollBar vb = scrolledComposite.getVerticalBar();// 控制垂直方向滚动增量
  vb.setIncrement(10);  

  inComposite.addMouseListener(new MouseAdapter(){

   @Override
   public void mouseDown(MouseEvent e) {
    inComposite.setFocus();
   }
  });

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

public void mouseDown(MouseEvent e) {
    inComposite.setFocus();
   }
只是其中的一种方法,可以是任意的监听,只要保证在鼠标滚动前 滚动面板或其直接子类 setFocus() 就可以了。

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

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
分享到:
评论

相关推荐

    ScrolledComposite自动出现滚动条

    ScrolledComposite自动出现最适合大小的滚动条代码

    org.eclipse.swt.win32

    org.eclipse.swt.SWT.class org.eclipse.swt.SWTError.class org.eclipse.swt.SWTException.class org.eclipse.swt.accessibility.ACC.class org.eclipse.swt.accessibility.Accessible.class org.eclipse.swt....

    Eclipse_Swt_Jface_核心应用_部分19

    6.7 滚动面板(ScrolledComposite) 95 6.7.1 设置滚动条的样式 96 6.7.2 滚动面板的其他方法 97 6.8 本章小结 97 第7章 SWT布局管理器 98 7.1 布局管理器概述 98 7.1.1 绝对定位 98 7.1.2 托管定位 ...

    simple.zip

    swt常有控件入门demo Button1.java Canvas1.java Combo1.java Menu1.java SashForm1.java ScrolledComposite1.java SimpleEditor1.java SimpleEditor2.java Slider1.java TabFolder1.java ToolBarExample.java ...

Global site tag (gtag.js) - Google Analytics