NatTable Cell编辑应禁用键入任何“常规”字符(例如字母或数字)的操作

时间:2019-06-27 09:59:59

标签: java eclipse nattable

  1. 我想在键入任何“常规”字符(例如字母或数字)时取消注册NatTable单元格编辑。 即,在键入任何数字或字符时,无需执行任何操作。

  2. 又一个问题,我已经将TABLE_CYCLE_TRAVERSAL_STRATEGY注册到我的网格层中,也可以使用箭头键和制表符正常工作。 但是,当我们按Enter键时,单元格选择将移至下一个单元格。

gridLayer.registerCommandHandler(new MoveCellSelectionCommandHandler(this.selectionLayer,
new EditTraversalStrategy(ITraversalStrategy.TABLE_CYCLE_TRAVERSAL_STRATEGY, this.natTable)));

但是我想实现这样一种方式,即按Enter键时,我需要编辑选定的单元格。

1 个答案:

答案 0 :(得分:1)

您需要创建和注册自定义配置。

  1. DefaultEditBindings 您需要删除这两种配置,以避免在按键时激活编辑模式

    uiBindingRegistry.registerKeyBinding(
            new LetterOrDigitKeyEventMatcher(),
            new KeyEditAction());
    uiBindingRegistry.registerKeyBinding(
            new LetterOrDigitKeyEventMatcher(SWT.MOD2),
            new KeyEditAction());
    
  2. DefaultSelectionBindings#configureMoveDownBindings() 删除以下行以禁用ENTER上的选择移动

    uiBindingRegistry.registerKeyBinding(
            new KeyEventMatcher(SWT.NONE, SWT.CR), action);
    uiBindingRegistry.registerKeyBinding(
            new KeyEventMatcher(SWT.MOD1, SWT.CR), action);
    
  3. 注册以下UI绑定以启用对ENTER和SHIFT + ENTER的编辑

    uiBindingRegistry.registerKeyBinding(
            new KeyEventMatcher(SWT.NONE, SWT.CR),
            new KeyEditAction());
    uiBindingRegistry.registerKeyBinding(
            new KeyEventMatcher(SWT.MOD1, SWT.CR),
            new KeyEditAction());
    

此外,您需要通过将useDefaultConfiguration构造函数参数设置为false来确保未注册默认配置。否则,仍然会注册并触发上述ui绑定(例如,对于SelectionLayer,您需要一个自定义的DefaultSelectionLayerConfiguration来注册自定义的DefaultSelectionBindings)。