所以,我有一个 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)
通过 Writer,但结果是一样的。
理想情况下,我希望能够做两件事:
- 仅将原始文本(无样式)保存到纯文本文件。
- 将完整内容保存为 html 以保持颜色等,但其中包含内容!
那么,我需要查看什么才能找到 JTextPane 的实际内容? (有或没有风格)
最佳答案
您可以使用 co_LoggerEdit.getText()
或
co_LoggerEdit.getDocument().getText(0, co_LoggerEdit.getDocument().getLength());
关于java - JTextPane - 内容在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6521289/