1

我有一个显示彩色文本的 JTextPane。我使用以下代码从 JTextPane 获取文本。

String temp = pane.getDocument().getText(0,pane.getDocument().getLength());

但是,当我尝试再次将临时变量内容设置为窗格时,

pane.select(0,pane.getDocument().getLength());
pane.replaceSelection(temp);

通过这种方式,我失去了颜色并得到白色文本。无论如何,我可以在不将内容复制到剪贴板的情况下保持文本的颜色。

请帮忙。

4

1 回答 1

2

实际上,这取决于您使用的 EditorKit。第一部分返回所选片段的文本(带有样式信息)。例如,在 RTFEditorKit 中,它将是文档片段的 rtf 内容。

第二部分不正确。替换选择无法正确处理内容。我猜在 RTFEditorKit 的情况下,它将是窗格中插入格式的所有文本。

我会用

pane.setText(temp);

反而。如果您需要插入样式片段,请在调用中kit.read(...)传递temp

您可以尝试使用Kit作为默认 RTFEditorKit 的替代品,看看会发生什么

更新:对不起,原来的评论有点不正确。代码应该是

 pane.getEditorKit().read(
      new StringReader(temp), 
      pane.getDocument(), 
      pane.getDocument().getLength())
于 2014-05-19T06:55:51.213 回答