自动 - 动态调整NatTable的大小

时间:2016-06-27 08:03:50

标签: nattable

我想自动 - 根据行数动态调整NatTable的大小。 换句话说,我有一个自然的高度' x'有10行。如果行小于10,那么nattable的高度应该减小,因此无法看到空白空间。如果行数超过10,则应该出现垂直滚动条。

1 个答案:

答案 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;
        }
    }
});

请注意,这只是一个解决方案。根据您使用的布局,可能会有更优雅的。