Как получить 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 выполнить обработку изменений, связанных со вставкой.

Другие вопросы по тегам