antvis / g6-editor

532 stars 172 forks source link

节点的 label 内容太长会溢出,有木有解决办法 #117

Closed papibabi closed 5 years ago

papibabi commented 5 years ago

我把 detailPanel 的label 编辑框换成 textarea 然后手动换行可以; 不手动换行就会溢出。。

junob commented 5 years ago

lz解决了吗

papibabi commented 5 years ago

重新注册一个节点继承 flow-node, 然后 label 逐字绘制。还是比较麻烦的,好像没有通用的解决办法, canvas 不支持自动换行

guozhaolong commented 5 years ago

我个人的理解,首先节点label太长就不太合理,考虑缩短文字或用省略号表示,然后我又去读了一下g的text源码,里面有个textArr属性是用来设置多行文本的,你在设置labelStyle的时候,传这个属性进去试试

labelStyle: {
   textArr:['aaaa','bbbbb','cccc']
}

希望能帮到你

dxq613 commented 5 years ago

在文本里面加个 '\n' 自动就换行了

papibabi commented 5 years ago

如果你用的是g6-editor 提供的默认节点,可以自定义一个节点,继承这个默认的节点,然后重写getLabel()方法。如果你用的是自定义节点,就把getLabel() 这个方法重新定义一下。把超出的部分用...表示,换行的话,目前没有想到。g6-editor 默认的getLabel(t){ return t.getModel().label; }

哈哈是的,重新注册了节点,但是换行要用到 measureText 方法然后逐字绘制,而不是直接绘制一整个字符串。好像没有什么捷径~canvas 没有换行的属性可以用 @IMlixingwang