35

在每篇文章中都回答了“如何将字符串附加到 JEditorPane?”这个问题。是这样的

jep.setText(jep.getText + "new string");

我试过这个:

jep.setText("<b>Termination time : </b>" + 
                        CriterionFunction.estimateIndividual_top(individual) + " </br>");
jep.setText(jep.getText() + "Processes' distribution: </br>");

结果我得到了“终止时间:1000”而没有“进程分布:”

为什么会这样???

4

3 回答 3

68

我怀疑这是附加文本的推荐方法。这意味着每次更改某些文本时,都需要重新解析整个文档。人们可能这样做的原因是不了解如何使用 JEditorPane。这包括我。

我更喜欢使用 JTextPane 然后使用属性。一个简单的例子可能是这样的:

JTextPane textPane = new JTextPane();
textPane.setText( "original text" );
StyledDocument doc = textPane.getStyledDocument();

//  Define a keyword attribute

SimpleAttributeSet keyWord = new SimpleAttributeSet();
StyleConstants.setForeground(keyWord, Color.RED);
StyleConstants.setBackground(keyWord, Color.YELLOW);
StyleConstants.setBold(keyWord, true);

//  Add some text

try
{
    doc.insertString(0, "Start of text\n", null );
    doc.insertString(doc.getLength(), "\nEnd of text", keyWord );
}
catch(Exception e) { System.out.println(e); }
于 2010-10-30T15:32:43.247 回答
27

A JEditorPane,就像 a 一样,JTextPane有 aDocument可用于插入字符串。

要将文本附加到 JEditorPane 中,您需要执行以下代码段:

JEditorPane pane = new JEditorPane();
/* ... Other stuff ... */
public void append(String s) {
   try {
      Document doc = pane.getDocument();
      doc.insertString(doc.getLength(), s, null);
   } catch(BadLocationException exc) {
      exc.printStackTrace();
   }
}

我对此进行了测试,对我来说效果很好。这doc.getLength()是您要插入字符串的位置,显然使用这一行您会将其添加到文本的末尾。

于 2010-11-02T20:22:16.170 回答
4

setText 是设置文本窗格中的所有文本。使用StyledDocument接口附加、删除等文本。

txtPane.getStyledDocument().insertString(
  offsetWhereYouWant, "text you want", attributesYouHope);
于 2010-10-30T15:26:46.377 回答