1

我正在尝试自动调整我的 NatTable 的大小。我有几件事:

1) 我的 NatTable 仅包含一列。2) 我偶尔会隐藏 NatTable。3) 围绕 NatTable 的 Part Control 会在鼠标拖动时自动调整大小。NatTable 也应该适合大小。4) 我有 NatTable Cells 的自定义单元格画家。

我尝试使用我的 bodyDataLayer(基于 GlazedListsDataProvider):

    bodyDataLayer.setDefaultRowHeight(35); 
    bodyDataLayer.setColumnWidthByPosition(0, 100);
    bodyDataLayer.setColumnPercentageSizing(true);

但是 nattable 根本没有出现。如果我双击不可见的行,我会得到所需的行。但是 natTable 本身并没有出现。NatTable 仅在 bodyDataLayer.setDefaultColumnWidth(SOME_VALUE); 只有默认的列宽有效。

我尝试按照官方文档中的建议将 Paint Listener 添加到 NatTable 以初始化自动调整大小命令。但它根本没有效果。

我试图添加

   natTable.setLayerPainter(
            new NatGridLayerPainter(natTable, SOME_VALUE));

通过位置自动调整列的大小。但它也没有呈现任何内容。我想知道如何调整我的 NatTable 的大小?

4

1 回答 1

2

通常DataLayer#setColumnPercentageSizing(true)应该足以确定百分比大小。

我只能假设隐藏 NatTable 偶尔会产生负面影响,因为这可能会导致百分比值的错误计算。0 的 100% 仍然是 0。

你打电话NatTable#setVisible(false)是要隐藏 NatTable 吗?在这种情况下,尝试执行以下代码行

natTable.doCommand(new ClientAreaResizeCommand(natTable));
natTable.redraw();

如果这样可以解决您的问题,请开票并报告该问题。在这种情况下,我们似乎需要为可见性更改添加侦听器SWT.Show或覆盖setVisible()以执行这些代码行。

于 2015-10-19T13:08:07.780 回答