java - JTextPane - 内容在哪里?

标签 java swing coding-style save jtextpane

所以,我有一个 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,但结果是一样的。

理想情况下,我希望能够做两件事:

  1. 仅将原始文本(无样式)保存到纯文本文件。
  2. 将完整内容保存为 html 以保持颜色等,但其中包含内容!

那么,我需要查看什么才能找到 JTextPane 的实际内容? (有或没有风格)

最佳答案

您可以使用 co_LoggerEdit.getText()

co_LoggerEdit.getDocument().getText(0, co_LoggerEdit.getDocument().getLength());

关于java - JTextPane - 内容在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6521289/

相关文章:

Java 代码约定 : must match pattern '^[a-z][a-zA-Z0-9]*$'

java - Action 监听器 "not abstract and does not override"错误

.net - 使用属性初始化时如何格式化多个属性? (。网)

java - 解析字符串的效果不符合预期

java - 我的插入排序逻辑似乎是正确的,但不起作用

java - 拖动 JScrollPane 上的 JLabel 时滚动 JScrollPane

java - 将自定义 Swing 组件的绘制委托(delegate)给父组件

php - 是否有任何工具可以在代码中按名称对 PHP 类方法进行排序?

java - 在具有不同 Controller 的多个端口上运行 Spring Boot 应用程序

java - 将 JTextField 输入限制为整数