Eclipse SWT ScrolledComposite 拒绝滚动
Eclipse SWT ScrolledComposite refuses to scroll
我正在为 eclipse 开发一个插件,我正在努力使用 ScrolledComposite
以及让它占用剩余的 space。
父布局是 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
父级放不下,所以应该有滚动条。
实际情况:没有滚动条。
我该如何解决这个问题?
ScrolledComposite
上的 GridData
需要将 grabExcessVerticalSpace
设置为 true
。我建议你使用扩展构造函数来明确定义它应该如何显示,例如:
GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1);
选项 A:将 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));
我正在为 eclipse 开发一个插件,我正在努力使用 ScrolledComposite
以及让它占用剩余的 space。
父布局是 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
父级放不下,所以应该有滚动条。
实际情况:没有滚动条。
我该如何解决这个问题?
ScrolledComposite
上的GridData
需要将grabExcessVerticalSpace
设置为true
。我建议你使用扩展构造函数来明确定义它应该如何显示,例如:GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1);
选项 A:将
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));