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),这是我应该有的。但是我需要在 italic 或 bold 中显示 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) 一次。帮我解决这个问题。希望你觉得这个问题很有趣。
Document
class只在Document中存储了一个"\n"
。因此,您不应尝试在文档中插入“\r”字符。
如果要向 Document
添加换行符,只需插入 "\n"
.
当您使用文本组件的 getText()
时,该方法会将文档中的“\n”字符替换为您当前平台的换行字符串。
因此对于 Windows,“\n”将为您替换为“\r\n”。
查看 Text and New Lines 了解有关此主题的更多信息。
我正在使用一个 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),这是我应该有的。但是我需要在 italic 或 bold 中显示 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) 一次。帮我解决这个问题。希望你觉得这个问题很有趣。
Document
class只在Document中存储了一个"\n"
。因此,您不应尝试在文档中插入“\r”字符。
如果要向 Document
添加换行符,只需插入 "\n"
.
当您使用文本组件的 getText()
时,该方法会将文档中的“\n”字符替换为您当前平台的换行字符串。
因此对于 Windows,“\n”将为您替换为“\r\n”。
查看 Text and New Lines 了解有关此主题的更多信息。