摘要: Network 上面的Node,默认情况是Label的折行只能通过HTML的
标签,这样做的弊端就是不能动态 根据文字的长度智能折行。 如果需要达到这个要求,需要定制Node的LabelAttachment。 最初的想法是 创建一个WrapLabelAttachment,继承自LabelAttachment,然后通过在一个JTextArea,设置文字,setLineWrap(true),指定JTextArea的宽度,然后把JTextArea 的内容绘制这个Attachment;在实现的过程中,发现JTextArea 有一个bug,就是折行的计算不准确,总是在右边留下很大的空白; 如下图: 测试代码: 最后通过自己定制一个MyTextArea来实现,在MyTextArea中,用LineBreakMeasurer来计算动态折行: 代码: 然后重写WrapLabelAttachment的 paintName 方法 和getBounds 方法: 代码: 代码: getBounds方法需要动态计算rect 的宽高。 最终效果图: 全部代码见附件: WrapLabelDemo
阅读全文