首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Eclipse SWT ScrolledComposite拒绝滚动

Eclipse SWT ScrolledComposite拒绝滚动
EN

Stack Overflow用户
提问于 2019-11-08 23:30:18
回答 1查看 90关注 0票数 0

我正在为eclipse开发一个插件,我很难使用ScrolledComposite,也很难让它占用剩余的空间。

父布局是一个2列网格:

代码语言:javascript
复制
@Override
public void createPartControl(Composite parent) {
    parent.setLayout(new GridLayout(2, false));
    // other views etc
}

ScrolledComposite的创建方式如下(略为缩写):

代码语言:javascript
复制
private void fillScroll() {
    if (scroll != null) {
      scroll.dispose();
    }
    scroll = new ScrolledComposite(parent, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);

    GridData gd = new GridData();
    gd.horizontalSpan = 2;
    scroll.setLayoutData(gd);

    Composite innerContainer = new Composite(scroll, 0);
    innerContainer.setLayout(new GridLayout(1, false));

    // for loop that adds widgets to innerContainer

    scroll.setExpandHorizontal(true);
    scroll.setExpandVertical(true);
    scroll.setContent(innerContainer);
    scroll.setSize(innerContainer.computeSize(SWT.DEFAULT, SWT.DEFAULT));

    parent.layout(true);
}

问题列表是在for循环中添加并由innerContainer包含的小部件。

期望:由于innerContainer太大,不适合父类,所以应该有滚动条。

实际情况:没有滚动条。

我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-09 00:29:09

  1. GridData on ScrolledComposite需要将grabExcessVerticalSpace设置为true。我建议您使用扩展构造函数,以便清楚地定义应该如何显示它,例如:

GridData gd =新GridData(SWT.FILL,SWT.FILL,true,true,2,1);

  • 选项A:将scroll.setSize更改为scroll.setMinSize

( scroll.setMinSize(innerContainer.computeSize(SWT.DEFAULT,SWT.DEFAULT);

或者,选项B:删除scroll.setExpandHorizontalscroll.setExpandVertical并将scroll.setSize更改为innerContainer.setSize

innerContainer.setSize(innerContainer.computeSize(SWT.DEFAULT,SWT.DEFAULT));

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58774954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档