Hi,
derzeit nutze ich ein JEditorPane samt JScrollPane um HTML Text darzustellen, der bei bestimmten Aktionen immer länger wird. Derzeit scrolle ich immer nach unten, indem ich mit setCaretPosition() den Caret ganz ans Ende stelle (ermittelt mit getDocument(), da getText().lenght() einen falschen Wert zurück gibt).
Leider scheint die JEditorPane Geschichte je länger der angezeigte Text wird, immer langsamer, irgendwann sogar so langsam wird, das es nicht mehr akzeptabel ist. Gibt es eine bessere Möglichkeit, das zu realisieren?
Derzeitiger Code:
derzeit nutze ich ein JEditorPane samt JScrollPane um HTML Text darzustellen, der bei bestimmten Aktionen immer länger wird. Derzeit scrolle ich immer nach unten, indem ich mit setCaretPosition() den Caret ganz ans Ende stelle (ermittelt mit getDocument(), da getText().lenght() einen falschen Wert zurück gibt).
Leider scheint die JEditorPane Geschichte je länger der angezeigte Text wird, immer langsamer, irgendwann sogar so langsam wird, das es nicht mehr akzeptabel ist. Gibt es eine bessere Möglichkeit, das zu realisieren?
Derzeitiger Code:
Code:
synchronized void addLogMessage(String leftMsg, String msg, int color)
{
String newRow = "<tr><td>";
String endRow = "</td></tr>";
String newColum = "</td><td>";
String FONT_HTML = FONTBLACK_HTML;
switch (color)
{
case BLACK_HTML: FONT_HTML = FONTBLACK_HTML;
break;
case RED_HTML: FONT_HTML = FONTRED_HTML;
break;
case CYAN_HTML: FONT_HTML = FONTCYAN_HTML;
break;
case GREEN_HTML: FONT_HTML = FONTGREEN_HTML;
break;
case WHITE_HTML: FONT_HTML = FONTWHITE_HTML;
break;
}
StringBuffer sb = new StringBuffer();
sb.append(epConsole.getText());
int index = sb.indexOf("</table>");
sb.insert(index, newRow + FONT_HTML + "[b]" + leftMsg + "[/b]" + FONTEND_HTML + newColum + FONT_HTML + msg + FONTEND_HTML + endRow);
epConsole.setText(sb.toString());
epConsole.setCaretPosition(epConsole.getDocument().getEndPosition().getOffset()-1);
}