在CopyDataToClipboardSerializer中,我需要覆盖copiedCells变量。
我在创建表格、注册新的CopyDataCommandHandler、覆盖表格样式等方面都使用了NatTableFactory.class。但我不知道如何覆盖CopyDataToClipboardSerializer。或者我应该注册一个新的并创建自己的类?
发布于 2021-01-13 18:15:53
我不知道你的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);https://stackoverflow.com/questions/65699402
复制相似问题