-1

我想根据行数动态调整 NatTable 的大小。换句话说,我有一个高度为“x”的 10 行的 nattable。如果行数少于 10,则 nattable 的高度应该减小,这样就看不到空白空间。如果行数超过 10,则应该出现垂直滚动条。

4

1 回答 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 回答