我想根据行数动态调整 NatTable 的大小。换句话说,我有一个高度为“x”的 10 行的 nattable。如果行数少于 10,则 nattable 的高度应该减小,这样就看不到空白空间。如果行数超过 10,则应该出现垂直滚动条。
问问题
310 次
1 回答
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;
}
}
});
请注意,这只是一种解决方案。根据您使用的布局,可能会有更优雅的布局。
于 2016-06-27T08:57:59.623 回答