首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NatTable -如何实现自定义CopyDataToClipboardSerializer

问NatTable -如何实现自定义CopyDataToClipboardSerializer
EN

Stack Overflow用户
提问于 2021-01-13 17:51:00
回答 1查看 14关注 0票数 0

在CopyDataToClipboardSerializer中,我需要覆盖copiedCells变量。

我在创建表格、注册新的CopyDataCommandHandler、覆盖表格样式等方面都使用了NatTableFactory.class。但我不知道如何覆盖CopyDataToClipboardSerializer。或者我应该注册一个新的并创建自己的类?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-13 18:15:53

我不知道你的NatTableFactory课程。所以我不确定你在那个类里面做了什么。

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

代码语言:javascript
复制
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,如果标题也应该导出的话:

代码语言:javascript
复制
CopyDataCommandHandler copyHandler =
        new MyCopyDataCommandHandler(
                selectionLayer,
                columnHeaderDataLayer,
                rowHeaderDataLayer);
gridLayer.registerCommandHandler(copyHandler);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65699402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档