JTextPane 双回车return

JTextPane double carriage return

我正在使用一个 JTextPane 对象,假设它的名字是 jtp,所以我可以用 斜体 显示一个有点短的字符串的一部分] 或 粗体 。我有一个字符串,让我们将其命名为 otxt,它有一个换行符。鉴于我正在使用 Windows,这意味着 \r\n 并且它是使用

创建的
System.getProperty("line.separator")

为了在它们完全形成之前消除所有疑虑,我将我的 String 转换为 char 数组,遍历 char 数组并在 Eclipse 控制台中写入所有字符的代码,通过转换为 使用隐式转换int 是的,只有一个代码 13,代表 \r,只有一个代码 10,代表 \n。现在,如果我使用

jtp.setText(otxt);

一切顺利 - 我从

转换为 char 数组
jtp.getText()

并打印出所有字符的代码,而我只有一个代码 13 (\r) 和一个代码 10 (\n),这是我应该有的。但是我需要在 italicbold 中显示 otxt 的某些部分,所以我必须使用

jtp.insertString(0 /*offset*/, otxt, attributeSet /*italic, bold or whatever stylistic property*/)

这里有一个大问题:这会在我应该有 \r\n 的地方创建 \r\r\n。使用相同的程序确认这一点:1) 从 jtp.getText() 到 char 数组的字符串; 2)走阵; 3)打印字符代码;我看到代码 13 (\r) 两次,代码 10 (\n) 一次。帮我解决这个问题。希望你觉得这个问题很有趣。

Documentclass只在Document中存储了一个"\n"。因此,您不应尝试在文档中插入“\r”字符。

如果要向 Document 添加换行符,只需插入 "\n".

当您使用文本组件的 getText() 时,该方法会将文档中的“\n”字符替换为您当前平台的换行字符串。

因此对于 Windows,“\n”将为您替换为“\r\n”。

查看 Text and New Lines 了解有关此主题的更多信息。