我正在尝试自动调整我的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的大小?
答案 0 :(得分:2)
通常DataLayer#setColumnPercentageSizing(true)
应足以确定百分比大小。
我只能假设偶尔隐藏NatTable 会产生负面影响,因为这可能导致错误计算百分比值。 0的100%仍为0。
您是否正在呼叫NatTable#setVisible(false)
隐藏NatTable?在这种情况下,尝试执行以下代码行
natTable.doCommand(new ClientAreaResizeCommand(natTable));
natTable.redraw();
如果这样可以解决您的问题,请打开机票并报告该问题。在这种情况下,我们似乎需要为SWT.Show
添加一个监听器或覆盖setVisible()
,以便在可见性更改时执行这些代码行。