检测JTextArea中的换行

时间:2012-08-17 04:21:30

标签: java swing jtextarea linefeed linewrap

我正在制作一个程序,该程序涉及将保存在JTextArea中的文本保存到文件中。问题是,当我使用setWrapStyleWord()时,当文本换行到新行时,不会创建换行符。因此,打印到文件的文本在一个非常长的行中。

是否有任何方法可以检测线条何时换行以便我可以插入换行符,或者有没有办法在线条换行发生的地方简单地添加换行符?

3 个答案:

答案 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为填充文本区域中一行的字符数。

将这个想法应用于自动换行只需要循环遍历你的字符串,并且如本答案的评论中所建议的那样,添加换行符以便它出现在空格上。