我想在键入任何“常规”字符(例如字母或数字)时取消注册NatTable单元格编辑。 即,在键入任何数字或字符时,无需执行任何操作。
又一个问题,我已经将TABLE_CYCLE_TRAVERSAL_STRATEGY注册到我的网格层中,也可以使用箭头键和制表符正常工作。 但是,当我们按Enter键时,单元格选择将移至下一个单元格。
gridLayer.registerCommandHandler(new MoveCellSelectionCommandHandler(this.selectionLayer,
new EditTraversalStrategy(ITraversalStrategy.TABLE_CYCLE_TRAVERSAL_STRATEGY, this.natTable)));
但是我想实现这样一种方式,即按Enter键时,我需要编辑选定的单元格。
答案 0 :(得分:1)
您需要创建和注册自定义配置。
DefaultEditBindings
您需要删除这两种配置,以避免在按键时激活编辑模式
uiBindingRegistry.registerKeyBinding(
new LetterOrDigitKeyEventMatcher(),
new KeyEditAction());
uiBindingRegistry.registerKeyBinding(
new LetterOrDigitKeyEventMatcher(SWT.MOD2),
new KeyEditAction());
DefaultSelectionBindings#configureMoveDownBindings()
删除以下行以禁用ENTER上的选择移动
uiBindingRegistry.registerKeyBinding(
new KeyEventMatcher(SWT.NONE, SWT.CR), action);
uiBindingRegistry.registerKeyBinding(
new KeyEventMatcher(SWT.MOD1, SWT.CR), action);
注册以下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
)。