【问题标题】:How to disable "Row Selection" for only selected number of rows of viewport layer in a NatTable?如何仅对 NatTable 中选定的视口层行数禁用“行选择”?
【发布时间】:2019-12-17 01:50:07
【问题描述】:

我的NatTable 包含由视口、主体和选择层组成的CompositeFreezeLayer

我想禁用冻结行的行选择。

这意味着,在我的表中,我有 15 行。在这些中,有 5 行被冻结,应该禁用该行以供选择。其他 10 行应启用行/单元格选择。

目前默认情况下所有行都在选择,可能应该通过选择层默认配置。

如何只禁用几行的行选择?

【问题讨论】:

    标签: java eclipse nattable


    【解决方案1】:

    实现一个自定义命令处理程序,用于检查位置并使用命令获取冻结区域中的位置。对于其他行转发命令。在 CompositeFreezeLayer 上注册该命令处理程序。

    【讨论】:

      【解决方案2】:

      由于我想禁用冻结层上的行选择和单元格选择,因此请检查命令的实例并转发命令。

      public class CustomFreezeLayerCommandHandler implements ILayerCommandHandler<ILayerCommand>
      {
      
        private int endRowOfFrozenLayer;
      
        public CustomFreezeLayerCommandHandler(final int lastRowOfFrozenLayer)
        {
          this.endRowOfFrozenLayer = lastRowOfFrozenLayer;
        }
      
      
        @Override
        public boolean doCommand(final ILayer targetLayer, final ILayerCommand command)
        {
          if (command instanceof ViewportSelectRowCommand)
          {
            return (((ViewportSelectRowCommand) command).getRowPosition() <= this.endRowOfFrozenLayer);
          }
          else if (command instanceof SelectCellCommand)
          {
      
            return (((SelectCellCommand) command).getRowPosition() <= this.endRowOfFrozenLayer);
          }
          return false;
      
        }
      
        @Override
        public Class<ILayerCommand> getCommandClass()
        {
          return ILayerCommand.class;
        }
      
      }
      

      【讨论】:

        猜你喜欢
        • 2016-09-21
        • 2014-08-29
        • 1970-01-01
        • 2020-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-07
        • 2011-03-04
        相关资源
        最近更新 更多