【问题标题】:JTextPane double carriage returnJTextPane 双回车
【发布时间】:2015-10-12 20:58:00
【问题描述】:

我正在使用一个 JTextPane 对象,假设它的名称是 jtp,所以我可以用 italicbold 显示一个有点短的字符串的一部分强>。我有一个字符串,我们将其命名为 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) 一次。帮我解决这个问题。希望你觉得这个问题很有趣。

【问题讨论】:

    标签: java swing newline jtextpane


    【解决方案1】:

    Document 类仅在 Document 中存储 "\n"。因此,您不应尝试在文档中插入“\r”字符。

    如果您想在 Document 中添加换行符,只需插入 "\n"

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

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

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

    【讨论】:

    • 我从未考虑过将 \n 替换为行分隔符的可能性。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2019-05-28
    • 2012-01-24
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 2018-03-06
    • 2011-07-12
    • 2014-01-16
    相关资源
    最近更新 更多