选择所有表格元素后,ColumnHideCommand使表格列在NatTable中消失

时间:2019-02-04 07:53:50

标签: java swt nattable

我有一个具有以下几层的NatTable组件:

  • ViewportLayer
  • SelectionLayer
  • RowHideShowLayer
  • ColumnGroupExpandCollapseLayer
  • ColumnHideShowLayer
  • DataLayer

当复选框选择更改时,我需要显示/隐藏特定列。为此,我使用NatTable组件提供的#doCommand()方法:

if(selection) {
   nattable.doCommand(new ColumnShowCommand(nattable, COLUMN_INDEX));
} else {
   nattable.doCommand(new ColumnHideCommand(nattable, COLUMN_INDEX+1));
}

一切正常,除了选择表中的所有项目并执行ColumnHideCommand的情况。在这种特定情况下,整个表的内容都会消失(Screenshot)。如果表中没有选择项,或者没有选择所有元素,那么一切正常。

请让我知道您是否知道那里发生了什么或者以前是否遇到过此类问题。我在NatTables方面的经验非常有限,因此,如果您需要任何其他信息,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:1)

这是SelectionLayer的一项功能,可基于列选择来支持多列隐藏操作。 ColumnHideCommand被消耗,而MultiColumnHideCommand则根据完全选择的列创建和执行。负责的代码位于SelectionLayer#handleColumnHideCommand(ColumnHideCommand)中。该方法受到保护,因此如果您不需要该功能,因为您仅以编程方式而不是通过用户执行的UI支持列隐藏/显示,则可以覆盖该方法以简单地执行super.doCommand(command);而无需检查选择。