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

时间:2015-10-19 06:54:56

标签: eclipse-rcp nattable

我正在尝试自动调整我的NatTable。我的事情很少:

1)我的NatTable只包含一列。 2)我偶尔会隐藏NatTable。 3)围绕NatTable自动调整零件控件的尺寸。 NatTable也应符合规格。 4)我为NatTable Cells定制了细胞画家。

我尝试使用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));

按位置自动调整列的大小。但它也不会呈现任何内容。我想知道如何调整我的NatTable的大小?

1 个答案:

答案 0 :(得分:2)

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

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

您是否正在呼叫NatTable#setVisible(false)隐藏NatTable?在这种情况下,尝试执行以下代码行

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

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