Как получить StyledDocument.insertString() для лучшего обновления
У меня есть фоновый поток, который получает текстовые данные из InputStream и пытается вставить их в JTextPane:
iLen = doc.getLength();
doc.insertString(iLen, lineS, normalStyle);
if ( iLen > 0 )
textPane.setCaretPosition(doc.getLength() - 1);
По сути, моя проблема в том, что большая часть времени проходит через текст, и он вызывает этот раздел кода, но ничего не прорисовывается, пока не пройдет большой раздел текста.
Я понимаю, что многое происходит за кулисами, и у меня нет слушателя или чего-то еще.
Так есть ли какой-нибудь довольно простой способ заставить его рисовать почти каждый раз, когда он вызывается?
Или хотя бы чаще, чем сейчас?
2 ответа
Попробуй использовать textPane.repaint()
после установки положения каретки.
Попробуй завернуть SwingUtilities.invokeAndWait()
чтобы позволить EDT выполнить обработку изменений, связанных со вставкой.