JTextPane 追加新字符串

2022-09-01 06:24:31

在每篇文章中,对“如何将字符串附加到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”,而没有“进程”分布:”

为什么会发生这种情况???


答案 1

我怀疑这是附加案文的推荐方法。这意味着每次更改某些文本时,都需要重新分析整个文档。人们之所以会这样做,是因为人们不了解如何使用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); }

答案 2

A ,就像 a 一样有一个,你可以用它来插入字符串。JEditorPaneJTextPaneDocument

要将文本追加到 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()


推荐