JTextPane добавляет новую строку
В каждой статье ответ на вопрос "Как добавить строку в 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>");
И в результате я получил "Termination time: 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 JEditorPane
, просто как a 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()
- это то, где вы хотите вставить строку, очевидно, с этой строкой вы добавляете ее в конец текста.
Ответ 3
setText - установить весь текст в текстовую область. Используйте StyledDocument интерфейс для добавления, удаления, an и т.д. На текст.
txtPane.getStyledDocument().insertString(
offsetWhereYouWant, "text you want", attributesYouHope);