Класс HTMLDocument

Все реализованные интерфейсы:
Serializable, Document, StyledDocument
public class HTMLDocument
extends DefaultStyledDocument

Документ, моделирующий HTML. Цель этой модели — поддержка как просмотра, так и редактирования. В результате структура, описываемая HTML-документом, по умолчанию не точно воспроизводится. Структура элементов, которая моделируется по умолчанию, создаётся классом HTMLDocument.HTMLReader, который реализует протокол HTMLEditorKit.ParserCallback, ожидаемый анализатором. Для изменения структуры можно наследовать класс HTMLReader, и переопределить метод getReader(int) для возврата нового реализованного объекта-ридера. Для получения подробностей о создаваемой по умолчанию структуре необходимо обратиться к документации по HTMLReader. Цель состоит в том, чтобы документ был без потерь (хотя воспроизведение формата HTML может привести к другому формату).

Документ моделирует только HTML и не пытается хранить атрибуты представления в нём. Элементы идентифицируются атрибутом StyleContext.NameAttribute, значение которого всегда должно быть типа HTML.Tag, идентифицирующего тип элемента. Некоторые элементы (например, комментарии) синтезируются. HTMLFactory использует этот атрибут для определения типа представления, которое следует создать.

Этот документ поддерживает инкрементальную загрузку. Свойство TokenThreshold управляет тем, какой объём парсинга буферизуется перед попыткой обновления структуры элементов документа. Это свойство устанавливается EditorKit, чтобы дочерние классы могли его отключить.

Свойство Base определяет URL, относительно которого разрешаются относительные URL-адреса. По умолчанию это будет Document.StreamDescriptionProperty, если значение свойства — URL. Если встречается тэг <BASE>, база станет URL, указанным в этом тэге. Поскольку базовый URL является свойством, его, конечно, можно установить напрямую.

Стандартный механизм хранения содержимого для этого документа — буфер с разрывами (GapContent). Альтернативные механизмы могут быть предоставлены с помощью конструктора, принимающего реализацию Content.

Изменение HTMLDocument

Помимо методов, предоставляемых объектом Document и StyledDocument для изменения HTMLDocument, HTMLDocument предоставляет ряд удобных методов. Следующие методы можно использовать для вставки HTML-содержимого в существующий документ.

Следующие примеры иллюстрируют использование этих методов. Каждый пример предполагает, что HTML-документ инициализирован следующим образом:

JEditorPane p = new JEditorPane();
 p.setContentType("text/html");
 p.setText("..."); // Document text is provided below.
 HTMLDocument d = (HTMLDocument) p.getDocument();

С следующим HTML-содержимым:

<html>
   <head>
     <title>An example HTMLDocument</title>
     <style type="text/css">
       div { background-color: silver; }
       ul { color: blue; }
     </style>
   </head>
   <body>
     <div id="BOX">
       <p>Paragraph 1</p>
       <p>Paragraph 2</p>
     </div>
   </body>
 </html>

Все методы изменения HTML-документа требуют Element. Элементы можно получить из HTML-документа, используя метод getElement(Element e, Object attribute, Object value). Он возвращает первый дочерний элемент, содержащий указанный атрибут со значением, в порядке обхода в глубину. Например, d.getElement(d.getDefaultRootElement(), StyleConstants.NameAttribute, HTML.Tag.P) возвращает первый элемент абзаца.

Удобный ярлык для поиска элементов — метод getElement(String); возвращает элемент, чей атрибут ID соответствует заданному значению. Например, d.getElement("BOX") возвращает элемент DIV.

Метод getIterator(HTML.Tag t) также может использоваться для поиска всех вхождений указанного HTML-тега в документе.

Вставка элементов

Элементы можно вставлять перед или после существующих дочерних элементов любого элемента, не являющегося листом, используя методы insertAfterStart и insertBeforeEnd. Например, если e — это элемент DIV, d.insertAfterStart(e, "<ul><li>List Item</li></ul>") вставляет список перед первым абзацем, а d.insertBeforeEnd(e, "<ul><li>List Item</li></ul>") вставляет список после последнего абзаца. Блок DIV становится родителем вновь вставленных элементов.

Элементы-сиблинги можно вставить перед или после любого элемента, используя методы insertBeforeStart и insertAfterEnd. Например, если e — это элемент DIV, d.insertBeforeStart(e, "<ul><li>List Item</li></ul>") вставляет список перед элементом DIV, а d.insertAfterEnd(e, "<ul><li>List Item</li></ul>") вставляет список после элемента DIV. Новые вставленные элементы становятся сиблингами элемента DIV.

Замена элементов

Элементы и все их потомки могут быть заменены с помощью методов setInnerHTML и setOuterHTML. Например, если e — это элемент DIV, d.setInnerHTML(e, "<ul><li>List Item</li></ul>") заменяет все дочерние абзацы списком, а d.setOuterHTML(e, "<ul><li>List Item</li></ul>") заменяет сам элемент DIV. В последнем случае родителем списка является элемент BODY.

Резюме

В следующей таблице показан пример документа и результаты различных методов, описанных выше.

Пример insertAfterStart insertBeforeEnd insertBeforeStart insertAfterEnd setInnerHTML setOuterHTML

Абзац 1

Абзац 2

  • Элемент списка

Абзац 1

Абзац 2

Абзац 1

Абзац 2

  • Элемент списка
  • Элемент списка

Абзац 1

Абзац 2

Абзац 1

Абзац 2

  • Элемент списка
  • Элемент списка
  • Элемент списка

Предупреждение: Сериализованные объекты этого класса не будут совместимы с будущими версиями Swing. Текущая поддержка сериализации подходит для краткосрочного хранения или RMI между приложениями, использующими одну и ту же версию Swing. Начиная с версии 1.4, поддержка долгосрочного хранения всех JavaBeans™ была добавлена в пакет java.beans. Обратитесь к XMLEncoder.

См. также:
Сериализованная форма

Вложенные классы

Модификатор и тип Класс Описание
class  HTMLDocument.BlockElement

Элемент, представляющий структурный блок HTML.

class  HTMLDocument.HTMLReader

HTML-ридер для загрузки HTML-документа со структурой HTML-элементов.

static class  HTMLDocument.Iterator

Итератор для итерации по определённому типу тега.

class  HTMLDocument.RunElement

Элемент, представляющий фрагмент текста, которому назначен набор атрибутов HTML на уровне символов.

Вложенные классы/интерфейсы, объявленные в классе javax.swing.text.DefaultStyledDocument

DefaultStyledDocument.AttributeUndoableEdit, DefaultStyledDocument.ElementBuffer, DefaultStyledDocument.ElementSpec, DefaultStyledDocument.SectionElement

Вложенные классы/интерфейсы, объявленные в классе javax.swing.text.AbstractDocument

AbstractDocument.AbstractElement, AbstractDocument.AttributeContext, AbstractDocument.BranchElement, AbstractDocument.Content, AbstractDocument.DefaultDocumentEvent, AbstractDocument.ElementEdit, AbstractDocument.LeafElement

Поля

Модификатор и тип Поле Описание
static String AdditionalComments

Значение ключа свойства документа.

Поля, объявленные в классе javax.swing.text.DefaultStyledDocument

buffer, BUFFER_SIZE_DEFAULT

Поля, объявленные в классе javax.swing.text.AbstractDocument

BAD_LOCATION, BidiElementName, ContentElementName, ElementNameAttribute, listenerList, ParagraphElementName, SectionElementName

Поля, объявленные в интерфейсе javax.swing.text.Document

StreamDescriptionProperty, TitleProperty

Конструкторы

Конструктор Описание
HTMLDocument()

Создаёт HTML-документ, используя размер буфера по умолчанию и стандартную реализацию StyleSheet.

HTMLDocument​(AbstractDocument.Content c, StyleSheet styles)

Создаёт HTML-документ с заданной реализацией хранения содержимого и заданным механизмом хранения стилей/атрибутов.

HTMLDocument​(StyleSheet styles)

Создаёт HTML-документ с реализацией хранения содержимого по умолчанию и заданным механизмом хранения стилей/атрибутов.

Методы

Модификатор и тип Метод Описание
protected void create​(DefaultStyledDocument.ElementSpec[] data)

Заменяет содержимое документа указанными спецификациями элементов.

protected Element createBranchElement​(Element parent, AttributeSet a)

Создаёт элемент ветви документа, который может содержать другие элементы.

protected AbstractDocument.AbstractElement createDefaultRoot()

Создаёт корневой элемент для представления структуры документа по умолчанию.

protected Element createLeafElement​(Element parent, AttributeSet a, int p0, int p1)

Создаёт элемент листа документа, который напрямую представляет текст (не имеет дочерних элементов).

protected void fireChangedUpdate​(DocumentEvent e)

Уведомляет всех слушателей, которые проявили интерес к уведомлениям об этом типе события.

protected void fireUndoableEditUpdate​(UndoableEditEvent e)

Уведомляет всех слушателей, которые проявили интерес к уведомлениям об этом типе события.

URL getBase()

Возвращает расположение для разрешения относительных URL-адресов.

Element getElement​(String id)

Возвращает элемент с заданным идентификатором Attribute.

Element getElement​(Element e, Object attribute, Object value)

Возвращает дочерний элемент e, содержащий атрибут attribute со значением value, или null в случае отсутствия такого элемента.

HTMLDocument.Iterator getIterator​(HTML.Tag t)

Извлекает итератор для указанного тега HTML.

HTMLEditorKit.Parser getParser()

Возвращает парсер, используемый при вставке HTML в существующий документ.

boolean getPreservesUnknownTags()

Возвращает поведение, которое парсер наблюдает при обнаружении неизвестных тегов.

HTMLEditorKit.ParserCallback getReader​(int pos)

Извлекает читатель для парсера, который используется при загрузке документа с HTML.

HTMLEditorKit.ParserCallback getReader​(int pos, int popDepth, int pushDepth, HTML.Tag insertTag)

Возвращает читатель для парсера, который используется для загрузки документа с HTML.

StyleSheet getStyleSheet()

Извлекает StyleSheet со специфическими для документа правилами отображения (CSS), которые были указаны в самом документе HTML.

int getTokenThreshold()

Получает количество токенов для буферизации перед попыткой обновления структуры элементов документа.

protected void insert​(int offset, DefaultStyledDocument.ElementSpec[] data)

Вставляет новые элементы в пакетном режиме.

void insertAfterEnd​(Element elem, String htmlText)

Вставляет HTML, заданный как строка, после конца указанного элемента.

void insertAfterStart​(Element elem, String htmlText)

Вставляет HTML, заданный как строка, в начале элемента.

void insertBeforeEnd​(Element elem, String htmlText)

Вставляет HTML, заданный как строка, в конце элемента.

void insertBeforeStart​(Element elem, String htmlText)

Вставляет HTML, заданный как строка, перед началом указанного элемента.

protected void insertUpdate​(AbstractDocument.DefaultDocumentEvent chng, AttributeSet attr)

Обновляет структуру документа в результате вставки текста.

void processHTMLFrameHyperlinkEvent​(HTMLFrameHyperlinkEvent e)

Обрабатывает HyperlinkEvents, сгенерированные документами в фрейме HTML.

void setBase​(URL u)

Устанавливает расположение для разрешения относительных URL-адресов.

void setInnerHTML​(Element elem, String htmlText)

Заменяет дочерние элементы указанного элемента содержимым, заданным как строка HTML.

void setOuterHTML​(Element elem, String htmlText)

Заменяет указанный элемент в родительском элементе содержимым, заданным как строка HTML.

void setParagraphAttributes​(int offset, int length, AttributeSet s, boolean replace)

Устанавливает атрибуты для абзаца.

void setParser​(HTMLEditorKit.Parser parser)

Устанавливает парсер, используемый методами, которые вставляют HTML в существующий документ, такие как setInnerHTML, и setOuterHTML.

void setPreservesUnknownTags​(boolean preservesTags)

Определяет, как парсер обрабатывает неизвестные теги.

void setTokenThreshold​(int n)

Устанавливает количество токенов для буферизации перед попыткой обновления структуры элементов документа.

Методы, объявленные в классе javax.swing.text.DefaultStyledDocument

addDocumentListener, addStyle, getBackground, getCharacterElement, getDefaultRootElement, getFont, getForeground, getLogicalStyle, getParagraphElement, getStyle, getStyleNames, removeDocumentListener, removeElement, removeStyle, removeUpdate, setCharacterAttributes, setLogicalStyle, styleChanged

Методы, объявленные в классе javax.swing.text.AbstractDocument

addUndoableEditListener, createPosition, dump, fireInsertUpdate, fireRemoveUpdate, getAsynchronousLoadPriority, getAttributeContext, getBidiRootElement, getContent, getCurrentWriter, getDocumentFilter, getDocumentListeners, getDocumentProperties, getEndPosition, getLength, getListeners, getProperty, getRootElements, getStartPosition, getText, getText, getUndoableEditListeners, insertString, postRemoveUpdate, putProperty, readLock, readUnlock, remove, removeUndoableEditListener, render, replace, setAsynchronousLoadPriority, setDocumentFilter, setDocumentProperties, writeLock, writeUnlock

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Методы, объявленные в интерфейсе javax.swing.text.Document

addUndoableEditListener, createPosition, getEndPosition, getLength, getProperty, getRootElements, getStartPosition, getText, getText, insertString, putProperty, remove, removeUndoableEditListener, render

Поля

AdditionalComments

public static final String AdditionalComments

Значение ключа свойства документа. Значение для ключа будет являться вектором строк, которые представляют собой комментарии, отсутствующие в теле.

См. также:
Постоянные значения полей

Конструкторы

HTMLDocument

public HTMLDocument()

Создаёт документ HTML с использованием размера буфера по умолчанию и StyleSheet по умолчанию. Это удобный метод для конструктора HTMLDocument(Content, StyleSheet).

HTMLDocument

public HTMLDocument(StyleSheet styles)

Создаёт документ HTML с реализацией хранения содержимого по умолчанию и указанным механизмом хранения стилей/атрибутов. Это удобный метод для конструктора HTMLDocument(Content, StyleSheet).

Параметры:
styles - стили

HTMLDocument

public HTMLDocument(AbstractDocument.Content c,
                    StyleSheet styles)

Создаёт документ HTML с заданной реализацией хранения содержимого и заданным механизмом хранения стилей/атрибутов.

Параметры:
c - контейнер для содержимого
styles - стили

Методы

getReader

public HTMLEditorKit.ParserCallback getReader(int pos)

Получает ридер для использования анализатором при загрузке документа с HTML. Реализовано для возврата экземпляра HTMLDocument.HTMLReader. Подклассы могут переопределить этот метод, чтобы изменить структуру документа по желанию. (Например, для обработки пользовательских тегов или структурного представления элементов стиля символов.)

Параметры:
pos - начальная позиция
Возвращает:
ридер, используемый анализатором для загрузки документа

getReader

public HTMLEditorKit.ParserCallback getReader(int pos,
                                              int popDepth,
                                              int pushDepth,
                                              HTML.Tag insertTag)

Возвращает ридер для использования анализатором при загрузке документа с HTML. Реализовано для возврата экземпляра HTMLDocument.HTMLReader. Подклассы могут переопределить этот метод, чтобы изменить структуру документа по желанию. (Например, для обработки пользовательских тегов или структурного представления элементов стиля символов.)

Это удобный метод для getReader(int, int, int, HTML.Tag, TRUE).

Параметры:
pos - начальная позиция
popDepth - количество ElementSpec.EndTagTypes для генерации перед вставкой
pushDepth - количество ElementSpec.StartTagTypes с направлением ElementSpec.JoinNextDirection, которое должно быть сгенерировано перед вставкой, но после генерации закрывающих тегов
insertTag - первый тег для начала вставки в документ
Возвращает:
ридер, используемый анализатором для загрузки документа

getBase

public URL getBase()

Возвращает расположение для разрешения относительных URL-адресов. По умолчанию это URL-адрес документа, если документ загружен из URL-адреса. Если найден и может быть проанализирован тег base, он будет использован в качестве базового расположения.

Возвращает:
базовое расположение

setBase

public void setBase(URL u)

Устанавливает расположение для разрешения относительных URL-адресов. По умолчанию это URL-адрес документа, если документ загружен из URL-адреса. Если найден и может быть проанализирован тег base, он будет использован в качестве базового расположения.

Это также устанавливает базу StyleSheet в u, а также базу документа.

Параметры:
u - желаемый базовый URL

insert

protected void insert(int offset,
                      DefaultStyledDocument.ElementSpec[] data)
               throws BadLocationException

Вставляет новые элементы в пакет. Вот как создаются элементы в документе. Анализ определяет необходимую структуру и создает спецификацию в виде набора токенов, описывающих редактирование, оставляя документ свободным от блокировки записи. Этот метод затем может вызываться порциями ридером для получения блокировки записи на более короткий период (например, пока документ фактически не изменяется).

Переопределяет:
insert в классе DefaultStyledDocument
Параметры:
offset - начальный смещение
data - данные элемента
Исключения:
BadLocationException - если заданная позиция не представляет допустимое местоположение в связанном документе.

insertUpdate

protected void insertUpdate(AbstractDocument.DefaultDocumentEvent chng,
                            AttributeSet attr)

Обновляет структуру документа в результате вставки текста. Это произойдет в пределах блокировки записи. Эта реализация просто анализирует вставленное содержимое на предмет разрывов строк и создает набор инструкций для буфера элементов.

Переопределяет:
insertUpdate в классе DefaultStyledDocument
Параметры:
chng - описание изменения документа
attr - атрибуты

create

protected void create(DefaultStyledDocument.ElementSpec[] data)

Заменяет содержимое документа заданными спецификациями элементов. Вызывается перед вставкой, если загрузка выполняется порциями. Это единственный метод, который вызывается при полной загрузке документа в один поток.

Переопределяет:
create в классе DefaultStyledDocument
Параметры:
data - новое содержимое документа

setParagraphAttributes

public void setParagraphAttributes(int offset,
                                   int length,
                                   AttributeSet s,
                                   boolean replace)

Устанавливает атрибуты абзаца.

Этот метод потокобезопасен, хотя большинство методов Swing не являются таковыми. Подробнее см. Асинхронность в Swing.

Определено в:
setParagraphAttributes в интерфейсе StyledDocument
Переопределяет:
setParagraphAttributes в классе DefaultStyledDocument
Параметры:
offset - смещение в абзаце (должно быть не меньше 0)
length - количество затронутых символов (должно быть не меньше 0)
s - атрибуты
replace - заменить существующие атрибуты или объединить их

getStyleSheet

public StyleSheet getStyleSheet()

Получает StyleSheet со специфическими для документа правилами отображения (CSS), которые были указаны в самом HTML-документе.

Возвращает:
StyleSheet

getIterator

public HTMLDocument.Iterator getIterator(HTML.Tag t)

Получает итератор для указанного HTML-тега. Это может использоваться для таких операций, как итерация по набору якорей или итерация по элементам ввода.

Параметры:
t - запрашиваемый HTML.Tag
Возвращает:
Iterator для данного HTML-тега
См. также:
HTML.Tag

createLeafElement

protected Element createLeafElement(Element parent,
                                    AttributeSet a,
                                    int p0,
                                    int p1)

Создает элемент листа документа, который напрямую представляет текст (не имеет дочерних элементов). Реализовано для возврата элемента типа HTMLDocument.RunElement.

Переопределяет:
createLeafElement в классе AbstractDocument
Параметры:
parent - родительский элемент
a - атрибуты для элемента
p0 - начало диапазона (должно быть не меньше 0)
p1 - конец диапазона (должно быть не меньше p0)
Возвращает:
новый элемент

createBranchElement

protected Element createBranchElement(Element parent,
                                      AttributeSet a)

Создает элемент ветви документа, который может содержать другие элементы. Реализовано для возврата элемента типа HTMLDocument.BlockElement.

Переопределяет:
createBranchElement в классе AbstractDocument
Параметры:
parent - родительский элемент
a - атрибуты
Возвращает:
элемент

createDefaultRoot

protected AbstractDocument.AbstractElement createDefaultRoot()

Создает корневой элемент, используемый для представления стандартной структуры документа.

Переопределяет:
createDefaultRoot в классе DefaultStyledDocument
Возвращает:
базовый элемент

setTokenThreshold

public void setTokenThreshold(int n)

Устанавливает количество токенов для буферизации перед попыткой обновления структуры элементов документов.

Параметры:
n - количество токенов для буферизации

getTokenThreshold

public int getTokenThreshold()

Возвращает количество токенов для буферизации перед попыткой обновления структуры элементов документов. Значение по умолчанию - Integer.MAX_VALUE.

Возвращает:
количество токенов для буферизации

setPreservesUnknownTags

public void setPreservesUnknownTags(boolean preservesTags)

Определяет, как обрабатываются неизвестные теги анализатором. Если установлено в true, неизвестные теги помещаются в модель, в противном случае они отбрасываются.

Параметры:
preservesTags - true, если неизвестные теги должны сохраняться в модели, в противном случае теги отбрасываются
См. также:
HTML.Tag

getPreservesUnknownTags

public boolean getPreservesUnknownTags()

Возвращает поведение анализатора при обнаружении неизвестных тегов.

Возвращает:
true, если неизвестные теги должны сохраняться при анализе
См. также:
HTML.Tag

processHTMLFrameHyperlinkEvent

public void processHTMLFrameHyperlinkEvent(HTMLFrameHyperlinkEvent e)

Обрабатывает HyperlinkEvents, генерируемые документами в HTML-рамке. Тип HyperlinkEvent, как предполагает параметр, - HTMLFrameHyperlinkEvent. В дополнение к обычной информации, содержащейся в HyperlinkEvent, это событие содержит элемент, соответствующий рамке, в которой произошел клик (элемент источника), и имя назначения. Имя назначения может иметь 4 возможных значения:

  • _self
  • _parent
  • _top
  • имя рамки
Если target - _self, то действие заключается в изменении значения атрибута HTML.Attribute.SRC и срабатывании события ChangedUpdate.

Если target - _parent, то он удаляет родительский элемент, который является элементом <FRAMESET>, и вставляет новый элемент <FRAME> и устанавливает атрибут HTML.Attribute.SRC со значением, равным целевому URL-адресу, и срабатывает события RemovedUpdate и InsertUpdate.

Если target - _top, этот метод ничего не делает. Обработка _top выполняется в реализации представления для рамки, а именно в FrameView. Учитывая, что _top подразумевает замену всего документа, обработку этого целесообразно выполнять вне документа, который он заменит.

Если target - имя рамки, то иерархия элементов проверяется на предмет элемента с именем, равным target, атрибут HTML.Attribute.SRC обновляется и срабатывает событие ChangedUpdate.

Параметры:
e - событие

setParser

public void setParser(HTMLEditorKit.Parser parser)

Устанавливает анализатор, используемый методами, которые вставляют html в существующий документ, например, setInnerHTML, и setOuterHTML.

HTMLEditorKit.createDefaultDocument установит для вас анализатор. Если вы создаете HTMLDocument вручную, убедитесь, что установили анализатор соответствующим образом.

Параметры:
parser - анализатор, используемый для вставки текста
С:
1.3

getParser

public HTMLEditorKit.Parser getParser()

Возвращает парсер, который используется при вставке HTML в существующий документ.

Возвращает:
используемый для вставки текста парсер
С:
1.3

setInnerHTML

public void setInnerHTML(Element elem,
                         String htmlText)
                  throws BadLocationException,
                         IOException

Заменяет потомков заданного элемента содержимым, указанным в виде HTML-строки.

Это будет восприниматься как минимум как два события, n вставок, за которыми следует удаление.

Рассмотрим следующую структуру (параметр elem выделен жирным шрифтом).

<body>
       |
     <div>
      /  \
    <p>   <p>

Вызов setInnerHTML(elem, "<ul><li>") приводит к следующей структуре (новые элементы выделены синим цветом).

<body>
       |
     <div>
         \
         <ul>
           \
           <li>

Параметр elem не должен быть листом, в противном случае будет брошено исключение IllegalArgumentException. Если параметр elem или htmlText имеет значение null, изменения в документе не будут внесены.

Для корректной работы документ должен иметь установленный HTMLEditorKit.Parser. Это будет так, если документ был создан из HTMLEditorKit с помощью метода createDefaultDocument.

Параметры:
elem - элемент ветви, чьи потомки будут заменены
htmlText - строка, которая будет обработана и назначена элементу elem
Исключения:
IllegalArgumentException - если elem является листом
IllegalStateException - если не задан HTMLEditorKit.Parser
BadLocationException - если замена невозможна из-за проблем со структурой
IOException - если произошла ошибка ввода-вывода
С:
1.3

setOuterHTML

public void setOuterHTML(Element elem,
                         String htmlText)
                  throws BadLocationException,
                         IOException

Заменяет заданный элемент в родительском элементе содержимым, указанным в виде HTML-строки.

Это будет восприниматься как минимум как два события, n вставок, за которыми следует удаление.

При замене листа будет проверяться наличие новой строки, если она нужна. Это может привести к вставке дополнительного элемента. Представьте, что вы заменяете элемент символа, содержащий новую строку, на <img>. Это создаст два элемента: один для изображения и один для новой строки.

Если вы пытаетесь заменить элемент на весь его размер, то, скорее всего, получите два элемента, например setOuterHTML(getCharacterElement (getLength()), "blah") приведет к двум листовым элементам в конце: один представляющий 'blah', а другой – конечный элемент.

Рассмотрим следующую структуру (параметр elem выделен жирным шрифтом).

<body>
       |
     <div>
      /  \
    <p>   <p>

Вызов setOuterHTML(elem, "<ul><li>") приводит к следующей структуре (новые элементы выделены синим цветом).

<body>
      |
     <ul>
       \
       <li>

Если параметр elem или htmlText имеет значение null, изменения в документе не будут внесены.

Для корректной работы документ должен иметь установленный HTMLEditorKit.Parser. Это будет так, если документ был создан из HTMLEditorKit с помощью метода createDefaultDocument.

Параметры:
elem - элемент для замены
htmlText - строка, которая будет обработана и вставлена вместо elem
Исключения:
IllegalStateException - если HTMLEditorKit.Parser не задан
BadLocationException - если замена невозможна из-за проблем со структурой
IOException - если произошла ошибка ввода-вывода
С:
1.3

insertAfterStart

public void insertAfterStart(Element elem,
                             String htmlText)
                      throws BadLocationException,
                             IOException

Вставляет HTML, указанный в виде строки, в начало элемента.

Рассмотрим следующую структуру (параметр elem выделен жирным шрифтом).

<body>
       |
     <div>
      /  \
    <p>   <p>

Вызов insertAfterStart(elem, "<ul><li>") приводит к следующей структуре (новые элементы выделены синим цветом).

<body>
          |
        <div>
       /  |  \
    <ul> <p> <p>
     /
  <li>

В отличие от метода insertBeforeStart, новые элементы становятся потомками указанного элемента, а не его братьями.

Параметр elem не должен быть листом, в противном случае будет брошено исключение IllegalArgumentException. Если параметр elem или htmlText имеет значение null, изменения в документе не будут внесены.

Для корректной работы документ должен иметь установленный HTMLEditorKit.Parser. Это будет так, если документ был создан из HTMLEditorKit с помощью метода createDefaultDocument.

Параметры:
elem - элемент ветви, который будет корнем для нового текста
htmlText - строка, которая будет обработана и назначена элементу elem
Исключения:
IllegalArgumentException - если elem является листом
IllegalStateException - если на документе не задан HTMLEditorKit.Parser
BadLocationException - если вставка невозможна из-за проблемы со структурой
IOException - если произошла ошибка ввода-вывода
С:
1.3

insertBeforeEnd

public void insertBeforeEnd(Element elem,
                            String htmlText)
                     throws BadLocationException,
                            IOException

Вставляет HTML, указанный в виде строки, в конец элемента.

Если потомки elem являются листами, и символ в elem.getEndOffset() - 1 — это новая строка, вставка произойдет перед новой строкой, чтобы текст не находился после неё.

Рассмотрим следующую структуру (параметр elem выделен жирным шрифтом).

<body>
       |
     <div>
      /  \
    <p>   <p>

Вызов insertBeforeEnd(elem, "<ul><li>") приводит к следующей структуре (новые элементы выделены синим цветом).

<body>
          |
        <div>
       /  |  \
     <p> <p> <ul>
               \
               <li>

В отличие от метода insertAfterEnd, новые элементы становятся потомками указанного элемента, а не его братьями.

Параметр elem не должен быть листом, в противном случае будет брошено исключение IllegalArgumentException. Если параметр elem или htmlText имеет значение null, изменения в документе не будут внесены.

Для корректной работы документ должен иметь установленный HTMLEditorKit.Parser. Это будет так, если документ был создан из HTMLEditorKit с помощью метода createDefaultDocument.

Параметры:
elem - элемент, который будет корнем для нового текста
htmlText - строка, которая будет обработана и назначена элементу elem
Исключения:
IllegalArgumentException - если elem является листом
IllegalStateException - если на документе не задан HTMLEditorKit.Parser
BadLocationException - если вставка невозможна из-за проблемы со структурой
IOException - если произошла ошибка ввода-вывода
С:
1.3

insertBeforeStart

public void insertBeforeStart(Element elem,
                              String htmlText)
                       throws BadLocationException,
                              IOException

Вставляет HTML, указанный в виде строки, перед началом заданного элемента.

Рассмотрим следующую структуру (параметр elem выделен жирным шрифтом).

<body>
       |
     <div>
      /  \
    <p>   <p>

Вызов insertBeforeStart(elem, "<ul><li>") приводит к следующей структуре (новые элементы выделены синим цветом).

<body>
         /  \
      <ul> <div>
       /    /  \
     <li> <p>  <p>

В отличие от метода insertAfterStart, новые элементы становятся братьями указанного элемента, а не его потомками.

Если параметр elem или htmlText имеет значение null, изменения в документе не будут внесены.

Для корректной работы документ должен иметь установленный HTMLEditorKit.Parser. Это будет так, если документ был создан из HTMLEditorKit с помощью метода createDefaultDocument.

Параметры:
elem - элемент, перед которым вставляется содержимое
htmlText - строка, которая будет обработана и вставлена перед элементом elem
Исключения:
IllegalStateException - если на документе не задан HTMLEditorKit.Parser
BadLocationException - если вставка невозможна из-за проблемы со структурой
IOException - если произошла ошибка ввода-вывода
С:
1.3

insertAfterEnd

public void insertAfterEnd(Element elem,
                           String htmlText)
                    throws BadLocationException,
                           IOException

Вставляет HTML, указанный в виде строки, после конца заданного элемента.

Рассмотрим следующую структуру (параметр elem выделен жирным шрифтом).

<body>
       |
     <div>
      /  \
    <p>   <p>

Вызов insertAfterEnd(elem, "<ul><li>") приводит к следующей структуре (новые элементы выделены синим цветом).

<body>
         /  \
      <div> <ul>
       / \    \
     <p> <p>  <li>

В отличие от метода insertBeforeEnd, новые элементы становятся братьями указанного элемента, а не его потомками.

Если параметр elem или htmlText имеет значение null, изменения в документе не будут внесены.

Для корректной работы документ должен иметь установленный HTMLEditorKit.Parser. Это будет так, если документ был создан из HTMLEditorKit с помощью метода createDefaultDocument.

Параметры:
elem - элемент, после которого вставляется содержимое
htmlText - строка, которая будет обработана и вставлена после элемента elem
Исключения:
IllegalStateException - если на документе не задан HTMLEditorKit.Parser
BadLocationException - если вставка невозможна из-за проблемы со структурой
IOException - если произошла ошибка ввода-вывода
С:
1.3

getElement

public Element getElement(String id)

Возвращает элемент, у которого задан идентификатор Attribute. Если элемент не найден, возвращается null. Обратите внимание, что этот метод работает с элементом, а не с тегом символа. В следующем фрагменте HTML: <a id="HelloThere"> атрибут – 'id', а тег символа – 'a'. Это удобный метод для getElement(RootElement, HTML.Attribute.id, id). Этот метод не потокобезопасен.

Параметры:
id - строка, представляющая искомый Attribute
Возвращает:
элемент с заданным Attribute или null, если он не найден, или null, если id является null
С:
1.3
См. также:
HTML.Attribute

getElement

public Element getElement(Element e,
                          Object attribute,
                          Object value)

Возвращает дочерний элемент e, содержащий атрибут attribute со значением value, или null, если такой элемент не найден. Этот метод не потокобезопасен.

Параметры:
e - корневой элемент, с которого начинается поиск
attribute - желаемый Attribute
value - значения для указанного Attribute
Возвращает:
элемент со значением указанного Attribute и указанным value, или null если он не найден
С:
1.3
См. также:
HTML.Attribute

fireChangedUpdate

protected void fireChangedUpdate(DocumentEvent e)

Уведомляет всех слушателей, которые зарегистрировали интерес к уведомлениям об этом типе события. Экземпляр события создаётся ленивым способом, используя параметры, переданные в метод fire.

Переопределяет:
fireChangedUpdate в классе AbstractDocument
Параметры:
e - событие
См. также:
EventListenerList

fireUndoableEditUpdate

protected void fireUndoableEditUpdate(UndoableEditEvent e)

Уведомляет всех слушателей, которые зарегистрировали интерес к уведомлениям об этом типе события. Экземпляр события создаётся ленивым способом, используя параметры, переданные в метод fire.

Переопределяет:
fireUndoableEditUpdate в классе AbstractDocument
Параметры:
e - событие
См. также:
EventListenerList

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/text/html/HTMLDocument.html

Spec-Zone .ru
спецификации, руководства, описания, API