JEditorPane 文档长度始终返回 0

问题描述 投票:0回答:1

我正在使用 JEditorPane 文档从字符串填充。我执行以下代码,但我不明白为什么以下指令返回的文档长度始终为 0。

提前感谢您的详细解释。

    String xxx  = "This is my text sample";
    
    
    javax.swing.JEditorPane p = new javax.swing.JEditorPane();
    p.setContentType("text/rtf");
    EditorKit kitRtf = p.getEditorKitForContentType("text/rtf");
    java.io.InputStream stream = new java.io.ByteArrayInputStream(xxx.getBytes()); 
    kitRtf.read(stream, p.getDocument(), 0);
    System.out.println(p.getDocument().getLength());
java swing inputstream document jeditorpane
1个回答
0
投票

代码输出为零的原因是因为您的编辑器工具包、字符串和编辑器窗格中的文档是脱节的。它们之间没有任何关系,尤其是编辑器工具包和文档之间。首先看一个没有编辑器套件的简单示例。它将显示您要设置的字符串与文档之间的关系。过程很简单:

  1. 创建文档
  2. 在编辑器窗格中设置文档
  3. 将字符串插入到文档中(本示例在索引 0 处插入字符串)

没有编辑器套件

public static void main(String[] args) throws IOException, BadLocationException {
    String xxx  = "This is my text sample";
    javax.swing.JEditorPane p = new javax.swing.JEditorPane();
    Document doc = new DefaultStyledDocument();
    p.setDocument(doc);
    doc.insertString(0, xxx, null);
    System.out.println(p.getDocument().getLength());
}

输出 22。

现在您知道如何将字符串连接到文档,让我们添加编辑器工具包。使用编辑器工具包时,您必须确保文档和编辑器工具包之间存在关系或关联。为此:

  1. 创建编辑器套件
  2. 使用编辑器工具包创建您要使用的文档。由于您需要 RTF,因此我创建了一个 RTF 编辑器,但对于本示例而言,这不相关。
  3. 将字符串插入文档并将文档设置到编辑器窗格中。

带有编辑器套件

public static void main(String[] args) throws IOException, BadLocationException {
    String xxx  = "This is my text sample";
    javax.swing.JEditorPane p = new javax.swing.JEditorPane();
    EditorKit kitRtf = new RTFEditorKit();
    Document doc = kitRtf.createDefaultDocument();
    p.setDocument(doc);
    doc.insertString(0, xxx, null);
    System.out.println(p.getDocument().getLength());
}

这也输出 22

© www.soinside.com 2019 - 2024. All rights reserved.