Я просматриваю HTML в виджете браузера SWT. Я добавляю сообщения регистрации в конец содержимого и хотел бы, чтобы нижняя часть была видна постоянно. В настоящее время, когда я добавляю текст к содержимому, я сначала устанавливаю новый текст:
browser.setText(content);
А потом я прокручиваю виджет Браузер с помощью JavaScript:
browser.execute("window.scrollTo(0,100000);");
Проблема в том, что когда я устанавливаю текст, виджет снова переключается на верх перед прокруткой вниз, поэтому, когда я быстро добавляю много сообщений, виджет браузера большую часть времени показывает верхнюю часть, иногда мерцая при переключении на дно. Это делает невозможным следить за тем, что записывается внизу.
Мне известно, что я мог бы использовать средство просмотра дерева и получить все удобства платформы Eclipse, но есть и версия приложения на Swing, и оба должны использовать один и тот же HTML-код в представлении CSS.
В идеале я бы хотел избежать встраивания компонента Swing, но если есть такой, который позволил бы это, я был бы рад услышать об этом. Я пробовал это с JEditorPane внутри JScrollPane, добавляя к контенту с помощью метода чтения набора редактора:
editorPane.getEditorKit().read(/*...*/);
А затем прокрутите вниз так:
editorPane.setCaretPosition(editorPane.getDocument().getLength());
Это работает очень гладко для автономного приложения Swing, но встроенное в Eclipse, оно мерцает и не успевает за быстрыми обновлениями HTML-контента.
Прямо сейчас единственный способ, которым я могу сделать эту работу плавно в Eclipse, это добавление к содержимому виджета Браузера вместо добавления, но я бы действительно предпочел добавлять новые сообщения внизу, а не вверху.