所以,我有一个 JTextPane
co_LoggerEdit = new JTextPane();
co_LoggerEdit.setContentType("text/html");
然后我存储文档和样式:
co_LogDoc = co_LoggerEdit.getStyledDocument();
co_LogStyle = co_LoggerEdit.addStyle("style", null);
然后,我使用此例程将文本添加到日志中:
StyleConstants.setForeground(co_LogStyle, col); // col == Color parameter
try { co_LogDoc.insertString(co_LogDoc.getLength(), text, co_LogStyle); }
catch (BadLocationException e) { System.err.println("Caught IOException: " + e.getMessage()); }
所有这些工作正常,在屏幕上我可以看到各种颜色和条目的日志。
当我想将此数据保存到文件时,问题就来了。我目前有这个:
public void me_SaveLogToFile(String filename)
{
StyledDocument doc = (StyledDocument)co_LoggerEdit.getDocument();
HTMLEditorKit kit = new HTMLEditorKit();
BufferedOutputStream out;
try
{
out = new BufferedOutputStream(new FileOutputStream(filename));
kit.write(out, doc, doc.getStartPosition().getOffset(), doc.getLength());
}
catch (Exception e)
{
cLogger cl_Logger = cLogger.getInstance();
cl_Logger.me_AddLog("ERROR: Save To File Failed", cLogger.LOG_TYPE.LOG_TYPE_ERROR, cLogger.LOG_LEVEL.LOG_LEVEL_NONE);
}
}
而且,虽然这确实创建了一个文件,但它的内容只显示了 HTML 样式,而不是实际内容。例如。
<html>
<head>
<style type="text/css">
<!--
style { color: #000000 }
-->
</style>
</head>
<body>
<p style="margin-top: 0">
<font color="#808080"><style>
</font><font color="#00ff00"><style>
</font><font color="#000000"><style>
</font> </p>
<p style="margin-top: 0">
<font color="#808080"><style>
</font><font color="#ffffff"><style>
</font><font color="#000000"><style>
</font> </p>
</body>
</html>
那么,我需要做什么才能访问 JTestPane 的实际内容,而不仅仅是样式?
我也尝试过使用:
co_LoggerEdit.write(out)
通过作家,但结果是一样的。
理想情况下,我希望能够做两件事:
- 仅将原始文本(没有样式)保存到纯文本文件中。
- 将完整内容保存为 html 以保持颜色等,但其中包含内容!
那么,我需要查看什么才能找到 JTextPane 的实际内容?(有或没有风格)