Dans chaque article, la réponse à une question "Comment ajouter une chaîne à un JEditorPane?" est quelque chose comme
jep.setText(jep.getText + "new string");
J'ai essayé ceci:
jep.setText("<b>Termination time : </b>" +
CriterionFunction.estimateIndividual_top(individual) + " </br>");
jep.setText(jep.getText() + "Processes' distribution: </br>");
Et en conséquence, j'ai obtenu "Temps de résiliation: 1000" sans "Distribution des processus:"
Pourquoi est-ce arrivé???
Je doute que ce soit l'approche recommandée pour ajouter du texte. Cela signifie que chaque fois que vous modifiez du texte, vous devez réanalyser l'intégralité du document. La raison pour laquelle les gens peuvent le faire est parce qu'ils ne comprennent pas comment utiliser un JEditorPane. Cela m'inclut.
Je préfère de loin utiliser un JTextPane puis utiliser des attributs. Un exemple simple pourrait être quelque chose comme:
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); }
Un JEditorPane
, tout comme un JTextPane
a un Document
que vous pouvez utiliser pour insérer des chaînes.
Ce que vous voudrez faire pour ajouter du texte dans un JEditorPane est cet extrait:
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();
}
}
J'ai testé cela et cela a bien fonctionné pour moi. La doc.getLength()
est l'endroit où vous voulez insérer la chaîne, évidemment avec cette ligne vous l'ajouteriez à la fin du texte.
setText consiste à définir tout le texte dans un volet de texte. Utilisez l'interface StyledDocument pour ajouter, supprimer et ainsi de suite du texte.
txtPane.getStyledDocument().insertString(
offsetWhereYouWant, "text you want", attributesYouHope);