我想自动 - 根据行数动态调整NatTable的大小。 换句话说,我有一个自然的高度' x'有10行。如果行小于10,那么nattable的高度应该减小,因此无法看到空白空间。如果行数超过10,则应该出现垂直滚动条。
答案 0 :(得分:1)
最后这是一个SWT布局问题。基本上你要求一种方法来根据表格内容指定最小高度。您可以使用GridLayout和调整大小侦听器来解决此问题,该侦听器根据可用容器高度更新最小高度。
Composite panel = new Composite(parent, SWT.NONE);
panel.setLayout(new GridLayout());
NatTable natTable = new NatTable(panel);
// minimum height of NatTable + scrollbar
int minHeight = natTable.getPreferredHeight() + 18;
GridDataFactory
.swtDefaults()
.align(SWT.FILL, SWT.BEGINNING)
.grab(true, true)
.minSize(SWT.DEFAULT, minHeight)
.applyTo(natTable);
panel.addListener(SWT.Resize, new Listener() {
@Override
public void handleEvent(Event event) {
GridData data = ((GridData) natTable.getLayoutData());
// minHeight + 10 because of the margins
if (panel.getBounds().height < (minHeight + 10)) {
data.minimumHeight = SWT.DEFAULT;
data.verticalAlignment = SWT.FILL;
} else {
data.minimumHeight = minHeight;
data.verticalAlignment = SWT.BEGINNING;
}
}
});
请注意,这只是一个解决方案。根据您使用的布局,可能会有更优雅的。