Spec-Zone.ru › OpenJDK 25

Класс HTMLDocument

java.lang.Object
javax.swing.text.AbstractDocument
javax.swing.text.DefaultStyledDocument
javax.swing.text.html.HTMLDocument
Все реализованные интерфейсы:
Serializable, Document, StyledDocument
public class HTMLDocument extends DefaultStyledDocument
Документ, моделирующий HTML. Эта модель предназначена для поддержки как просмотра, так и редактирования. В результате структура, описанная HTML-документом, по умолчанию воспроизводится не в точности. Структура элементов, моделируемая по умолчанию, создаётся классом HTMLDocument.HTMLReader, реализующим протокол HTMLEditorKit.ParserCallback, ожидаемый анализатором. Чтобы изменить структуру, можно создать подкласс HTMLReader и переопределить метод getReader(int), чтобы он возвращал новую реализацию reader. Подробности о создаваемой по умолчанию структуре см. в документации HTMLReader. Предполагается, что документ не теряет данные (хотя при воспроизведении формат HTML может измениться).

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

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

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

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

Изменение HTMLDocument

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

  • setInnerHTML(Element, String)
  • setOuterHTML(Element, String)
  • insertBeforeStart(Element, String)
  • insertAfterStart(Element, String)
  • insertBeforeEnd(Element, String)
  • insertAfterEnd(Element, String)

В следующих примерах показано использование этих методов. Каждый пример предполагает, что 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.

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

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

Элементы можно вставлять перед или после существующих дочерних элементов любого нелистового элемента с помощью методов 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.

Краткое описание

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

HTML-содержимое приведённого выше примера
Пример insertAfterStart insertBeforeEnd insertBeforeStart insertAfterEnd setInnerHTML setOuterHTML

Абзац 1

Абзац 2

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

Абзац 1

Абзац 2

Абзац 1

Абзац 2

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

Абзац 1

Абзац 2

Абзац 1

Абзац 2

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

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

Краткое описание вложенных классов

Модификатор и тип Класс Описание
class  HTMLDocument.BlockElement
Элемент, представляющий структурный блок HTML.
class  HTMLDocument.HTMLReader
HTML reader для загрузки HTML-документа со структурой элементов HTML.
static class  HTMLDocument.Iterator
Итератор для перебора тегов определённого типа.
class  HTMLDocument.RunElement
Элемент, представляющий фрагмент текста с набором назначенных ему атрибутов HTML на уровне символов.

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

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

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

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

Краткое описание полей

Модификатор и тип Поле Описание
static final String AdditionalComments
Значение ключа свойства документа.

Поля, объявленные в классе DefaultStyledDocument

buffer, BUFFER_SIZE_DEFAULT

Поля, объявленные в классе AbstractDocument

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

Поля, объявленные в интерфейсе 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)
Получает reader, который анализатор должен использовать для загрузки документа с HTML.
HTMLEditorKit.ParserCallback getReader(int pos, int popDepth, int pushDepth, HTML.Tag insertTag)
Возвращает reader, который анализатор должен использовать для загрузки документа с 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)
Задаёт количество токенов, которые нужно буферизовать перед попыткой обновить структуру элементов документа.

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

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

Методы, объявленные в классе 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

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

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

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

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

Подробное описание полей

AdditionalComments

public static final String AdditionalComments
Значение ключа свойства документа. Значением ключа будет Vector строк, представляющих комментарии, не найденные в теле документа.
См. также:
  • Значения константных полей

Подробное описание конструкторов

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, это событие содержит элемент, соответствующий фрейму, в котором был выполнен щелчок (исходный элемент), и имя целевого фрейма. Имя целевого фрейма может иметь одно из четырех значений:
  • _self
  • _parent
  • _top
  • именованный фрейм
Если целевое значение — _self, выполняется изменение значения атрибута HTML.Attribute.SRC и генерируется событие ChangedUpdate.

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

Если целевое значение — _top, этот метод ничего не делает. В реализации представления для фрейма, а именно в FrameView, обрабатывается значение _top. Поскольку _top подразумевает замену всего документа, такую обработку имеет смысл выполнять вне документа, который будет заменен.

Если целевое значение — именованный фрейм, в иерархии элементов выполняется поиск элемента с именем, равным целевому; его атрибут 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. Обратите внимание, что этот метод работает с Attribute, а не с символьным тегом. В следующем фрагменте 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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, где представлены более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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/25/docs/api/java.desktop/javax/swing/text/html/HTMLDocument.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API