【问题标题】:NatTable - how to implement custom CopyDataToClipboardSerializerNatTable - 如何实现自定义 CopyDataToClipboardSerializer
【发布时间】:2021-04-18 07:35:58
【问题描述】:

CopyDataToClipboardSerializer 中我需要覆盖copiedCells 变量。

我确实使用NatTableFactory.class 创建表格,注册新的CopyDataCommandHandler,覆盖表格样式等等。但我不知道如何覆盖CopyDataToClipboardSerializer。还是我应该注册一个新的并创建自己的课程?

【问题讨论】:

    标签: nattable nebula


    【解决方案1】:

    我不知道你的 NatTableFactory 类。所以我不确定你在那个班级里做什么。

    如果您需要自定义序列化程序来例如将文本中的换行符替换为空格以避免破坏表结构,则需要创建自定义实现并使用它。

    class MyCopyDataCommandHandler extends CopyDataCommandHandler {
    
        public MyCopyDataCommandHandler(SelectionLayer selectionLayer, ILayer columnHeaderLayer, ILayer rowHeaderLayer) {
            super(selectionLayer, columnHeaderLayer, rowHeaderLayer);
        }
    
        @Override
        protected void internalDoCommand(CopyDataToClipboardCommand command, ILayerCell[][] assembledCopiedDataStructure) {
            ISerializer serializer = new MyCopyDataToClipboardSerializer(assembledCopiedDataStructure, command);
            serializer.serialize();
        }
    }
    
    class MyCopyDataToClipboardSerializer extends CopyDataToClipboardSerializer {
    
        public MyCopyDataToClipboardSerializer(ILayerCell[][] copiedCells, CopyDataToClipboardCommand command) {
            super(copiedCells, command);
        }
    
        @Override
        protected String getTextForCell(ILayerCell cell) {
            return super.getTextForCell(cell).replace('\n', ' ');
        }
    }
    

    如果标题也应该导出,然后像这样注册自定义MyCopyDataCommandHandler

    CopyDataCommandHandler copyHandler =
            new MyCopyDataCommandHandler(
                    selectionLayer,
                    columnHeaderDataLayer,
                    rowHeaderDataLayer);
    gridLayer.registerCommandHandler(copyHandler);
    

    【讨论】:

    • 这就是我要找的。非常感谢你,我会给你买啤酒或什么给@Dirk Fauth
    猜你喜欢
    • 1970-01-01
    • 2010-12-02
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    相关资源
    最近更新 更多