我正在为eclipse开发一个插件,我很难使用ScrolledComposite,也很难让它占用剩余的空间。
父布局是一个2列网格:
@Override
public void createPartControl(Composite parent) {
parent.setLayout(new GridLayout(2, false));
// other views etc
}ScrolledComposite的创建方式如下(略为缩写):
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太大,不适合父类,所以应该有滚动条。
实际情况:没有滚动条。
我该如何解决这个问题?
发布于 2019-11-09 00:29:09
GridData on ScrolledComposite需要将grabExcessVerticalSpace设置为true。我建议您使用扩展构造函数,以便清楚地定义应该如何显示它,例如:GridData gd =新GridData(SWT.FILL,SWT.FILL,true,true,2,1);
scroll.setSize更改为scroll.setMinSize:( scroll.setMinSize(innerContainer.computeSize(SWT.DEFAULT,SWT.DEFAULT);
或者,选项B:删除scroll.setExpandHorizontal和scroll.setExpandVertical并将scroll.setSize更改为innerContainer.setSize:
innerContainer.setSize(innerContainer.computeSize(SWT.DEFAULT,SWT.DEFAULT));
https://stackoverflow.com/questions/58774954
复制相似问题