すべての記事で、「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」になりました。
なぜこれが起こったのですか???
私はそれがテキストを追加するための推奨されるアプローチだとは思わない。つまり、テキストを変更するたびに、ドキュメント全体を再解析する必要があります。人々がこれを行う理由は、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); }
JEditorPane
には、JTextPane
と同様に、文字列の挿入に使用できるDocument
があります。
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()
は、文字列を挿入する場所です。明らかにこの行では、文字列をテキストの最後に追加します。
setTextは、テキストペインのすべてのテキストを設定します。 StyledDocument インターフェイスを使用して、テキストの追加、削除、その他を行います。
txtPane.getStyledDocument().insertString(
offsetWhereYouWant, "text you want", attributesYouHope);