在 Eclipse RCP 应用程序中自动调整 NatTable 的大小

Auto Resizing NatTable in Eclipse RCP Application

我正在尝试自动调整 NatTable 的大小。我没有什么东西:

1) 我的 NatTable 只有一列。 2)我偶尔会隐藏 NatTable。 3) NatTable 周围的部件控件在鼠标拖动时自动调整大小。 NatTable 也应该适合大小。 4) 我有 NatTable 单元格的自定义单元格画家。

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

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

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

我尝试按照官方文档中的建议向 NatTable 添加一个 Paint Listener 以初始化自动调整大小命令。但是一点效果都没有。

我尝试添加

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

通过 position.But 自动调整列的大小,它也不会呈现任何内容。我想知道如何调整 NatTable 的大小?

通常 DataLayer#setColumnPercentageSizing(true)应该足以进行百分比调整。

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

您是在调用 NatTable#setVisible(false) 来隐藏 NatTable 吗?在那种情况下尝试执行以下代码行

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

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