【问题标题】:How do I select entire column on selecting row cell in NatTable?如何在 NatTable 中选择行单元格时选择整列?
【发布时间】:2020-02-18 05:30:46
【问题描述】:

我们有一个没有标题的 NatTable,我将第一行视为标题, - 注册 CELL_PAINTER 以更改可视化,使该行看起来类似于标题。

  • 还注册了实现 ILayerCommandHandler 的 CustomCommandHandler 以防止第一行的单元格/行选择。
   selectionLayer.registerCommandHandler(new CustomCommandHandler());
  • 单元格选择对其他单元格工作正常。
  public boolean doCommand(final ILayer layer, final ILayerCommand command)
          {
            if (command instanceof ViewportSelectRowCommand)
            {
               return ((ViewportSelectRowCommand) command).getRowPosition() <= 1;
            }
            else if (command instanceof SelectCellCommand)
            {
              return ((SelectCellCommand) command).getRowPosition() <= 1
            }
            return false;
          }

现在如何在选择第一行的单元格时选择整列。以免影响其他行单元格的单元格选择。

单击第一行的任何单元格应选择整列。

单击其他行上的任何单元格应选择相同的单元格。 (目前正在发生这种情况)

【问题讨论】:

    标签: eclipse nattable


    【解决方案1】:

    虽然我不太确定只有以复杂的方式配置的主体看起来和行为就像它有标题而没有真正的标题(恕我直言,这没有任何意义),但你需要注册一个自定义处理程序来检查列位置并将SelectCellCommand 转换为SelectColumnCommand

    this.selectionLayer.registerCommandHandler(new SelectCellCommandHandler(this.selectionLayer) {
    
        @Override
        public boolean doCommand(ILayer targetLayer, SelectCellCommand command) {
            if (command.convertToTargetLayer(targetLayer)
                    && command.getColumnPosition() == 0) {
                return targetLayer.doCommand(
                        new SelectColumnCommand(
                                targetLayer,
                                command.getColumnPosition(),
                                command.getRowPosition(),
                                command.isShiftMask(),
                                command.isControlMask()));
            }
            return super.doCommand(targetLayer, command);
        }
    });
    

    但我预计在此过程中会出现更多问题,因为在其他情况下,模仿的标头的行为也不像真正的标头。您也可以尝试覆盖getRegionLabelsByXY(int, int),但我不确定这是否可行或导致更多问题。

    【讨论】:

      猜你喜欢
      • 2017-02-26
      • 1970-01-01
      • 2020-05-03
      • 2016-05-12
      • 2016-11-29
      • 2016-09-21
      • 2018-02-28
      • 2015-07-08
      • 2021-07-09
      相关资源
      最近更新 更多