【问题标题】:Example showing Multi Edit in Nattable在 Nattable 中显示多重编辑的示例
【发布时间】:2020-08-14 10:41:09
【问题描述】:

我有一个要求,在单元格中单击一次,必须可以进行正常编辑,并且在单元格中双击时应该打开一个对话框来编辑单元格。两者可以单独使用。我看到了一个方法“boolean supportMultiEdit(IConfigRegistry configRegistry, List configLabels)”,但没有显示工作的示例。有没有人用过或者可以展示一下它的配置。

【问题讨论】:

    标签: nattable


    【解决方案1】:

    多重编辑意味着可以一次编辑多个单元格。这当然是在编辑器中完成的,因为内联执行多重编辑毫无意义。你应该看看openInline(IConfigRegistry, List<String>) 或者更好的EditConfigAttributes#OPEN_IN_DIALOG 来解决你正在寻找的东西。

    但您实际上是在寻找一种方法来处理在不同 UI 交互上以不同方式打开编辑器的方式。所以需要注册相应的UI绑定。这已经在NatTable Forum 中讨论过。

    EditorExample 显示了很多可供编辑的可能配置选项。几乎每个可编辑的示例都显示了多重编辑功能。您只需选择要编辑的多个单元格,然后开始输入或按 F2。

    以下代码将使用基于 UI 绑定操作中添加的标签的配置来解决问题:

    public class OpenEditorConfiguration extends AbstractRegistryConfiguration {
    
        @Override
        public void configureRegistry(IConfigRegistry configRegistry) {
            configRegistry.registerConfigAttribute(
                EditConfigAttributes.OPEN_IN_DIALOG,
                Boolean.TRUE,
                DisplayMode.EDIT,
                "open_in_dialog");
        }
    
        @Override
        public void configureUiBindings(UiBindingRegistry uiBindingRegistry) {
            uiBindingRegistry.registerDoubleClickBinding(
                new CellEditorMouseEventMatcher(GridRegion.BODY),
                new IMouseAction() {
    
                    @Override
                    public void run(NatTable natTable, MouseEvent event) {
                        int columnPosition = natTable.getColumnPositionByX(event.x);
                        int rowPosition = natTable.getRowPositionByY(event.y);
                        ILayerCell cell = natTable.getCellByPosition(columnPosition, rowPosition);
                        cell.getConfigLabels().add("open_in_dialog");
    
                        natTable.doCommand(new EditCellCommand(
                            natTable, 
                            natTable.getConfigRegistry(), 
                            cell));
                    }
                });
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-04-11
      • 2015-08-21
      • 1970-01-01
      • 2018-03-09
      • 2016-04-19
      • 1970-01-01
      • 1970-01-01
      • 2015-02-04
      • 2012-10-07
      相关资源
      最近更新 更多