我正在制作一个程序,该程序涉及将保存在JTextArea
中的文本保存到文件中。问题是,当我使用setWrapStyleWord()
时,当文本换行到新行时,不会创建换行符。因此,打印到文件的文本在一个非常长的行中。
是否有任何方法可以检测线条何时换行以便我可以插入换行符,或者有没有办法在线条换行发生的地方简单地添加换行符?
答案 0 :(得分:3)
使用javax.swing.text.Utilities
public static final int getRowStart(JTextComponent c, int offs)
public static final int getRowEnd(JTextComponent c, int offs)
传递JTextArea
和前一行的偏移量
答案 1 :(得分:2)
这个上下文敏感。也就是说,根据JTextArea
的大小,单词中断将会改变,正如BrianRoach已经说过的那样。
但是,如果你真的确定了,你可以使用LineBreakMeasurer
来解决这个问题。
查看此example
答案 2 :(得分:0)
如果你用字符而不是单词包装,你可以:
如果您在JTextArea
中使用等宽字体,则可以在之后处理字符串,在每\n
个字符后添加x
,其中x
为填充文本区域中一行的字符数。
将这个想法应用于自动换行只需要循环遍历你的字符串,并且如本答案的评论中所建议的那样,添加换行符以便它出现在空格上。