Класс HTMLDocument
- Все реализованные интерфейсы:
-
Serializable,Document,StyledDocument
public class HTMLDocument extends DefaultStyledDocument
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-содержимого в существующий документ.
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.
Метод 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 final 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 |
Создает документ HTML с заданной реализацией хранения содержимого и заданным механизмом хранения стилей/атрибутов. |
HTMLDocument |
Создает документ HTML с реализацией хранения содержимого по умолчанию и указанным механизмом хранения стилей/атрибутов. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
protected void |
create |
Заменяет содержимое документа заданными спецификациями элементов. |
protected Element |
createBranchElement |
Создает элемент ветви документа, который может содержать другие элементы. |
protected AbstractDocument.AbstractElement |
createDefaultRoot() |
Создает корневой элемент, который используется для представления структуры документа по умолчанию. |
protected Element |
createLeafElement |
Создает элемент листа документа, который непосредственно представляет текст (не имеет дочерних элементов). |
protected void |
fireChangedUpdate |
Уведомляет всех слушателей, которые зарегистрировали интерес к уведомлению об этом типе события. |
protected void |
fireUndoableEditUpdate |
Уведомляет всех слушателей, которые зарегистрировали интерес к уведомлению об этом типе события. |
URL |
getBase() |
Возвращает расположение для разрешения относительных URL-адресов. |
Element |
getElement |
Возвращает элемент с заданным идентификатором Attribute. |
Element |
getElement |
Возвращает дочерний элемент e, содержащий атрибут attribute со значением value, или null, если такой элемент не найден. |
HTMLDocument.Iterator |
getIterator |
Извлекает итератор для указанного HTML-тега. |
HTMLEditorKit.Parser |
getParser() |
Возвращает анализатор, используемый при вставке HTML в существующий документ. |
boolean |
getPreservesUnknownTags() |
Возвращает поведение, которое анализатор наблюдает при обнаружении неизвестных тегов. |
HTMLEditorKit.ParserCallback |
getReader |
Извлекает читатель для использования анализатором при загрузке документа с HTML. |
HTMLEditorKit.ParserCallback |
getReader |
Возвращает читатель для использования анализатором при загрузке документа с HTML. |
StyleSheet |
getStyleSheet() |
Извлекает StyleSheet с правилами отображения, специфичными для документа (CSS), которые были указаны в самом HTML-документе. |
int |
getTokenThreshold() |
Получает количество токенов для буферизации перед попыткой обновления структуры элементов документов. |
protected void |
insert |
Вставка новых элементов в блоке. |
void |
insertAfterEnd |
Вставляет HTML, указанный в виде строки, после окончания данного элемента. |
void |
insertAfterStart |
Вставляет HTML, указанный в виде строки, в начале элемента. |
void |
insertBeforeEnd |
Вставляет HTML, указанный в виде строки, в конце элемента. |
void |
insertBeforeStart |
Вставляет HTML, указанный в виде строки, перед началом заданного элемента. |
protected void |
insertUpdate |
Обновляет структуру документа в результате вставки текста. |
void |
processHTMLFrameHyperlinkEvent |
Обрабатывает HyperlinkEvents, которые генерируются документами в фрейме HTML. |
void |
setBase |
Устанавливает расположение для разрешения относительных URL-адресов. |
void |
setInnerHTML |
Заменяет дочерние элементы заданного элемента содержимым, указанным в виде HTML-строки. |
void |
setOuterHTML |
Заменяет заданный элемент в родительском элементе содержимым, указанным в виде HTML-строки. |
void |
setParagraphAttributes |
Устанавливает атрибуты для абзаца. |
void |
setParser |
Устанавливает анализатор, используемый методами, которые вставляют html в существующий документ, такие как setInnerHTML и setOuterHTML. |
void |
setPreservesUnknownTags |
Определяет, как анализатор обрабатывает неизвестные теги. |
void |
setTokenThreshold |
Устанавливает количество токенов для буферизации перед попыткой обновления структуры элементов документов. |
Методы, объявленные в классе 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
Подробное описание полей
Дополнительные комментарии
public static final String AdditionalComments
- См. также:
Подробное описание конструкторов
HTMLDocument
public HTMLDocument()
StyleSheet. Это метод для удобства использования конструктора HTMLDocument(Content, StyleSheet).HTMLDocument
public HTMLDocument(StyleSheet styles)
HTMLDocument(Content, StyleSheet).- Параметры:
-
styles- стили
HTMLDocument
public HTMLDocument(AbstractDocument.Content c, StyleSheet styles)
- Параметры:
-
c- контейнер для содержимого -
styles- стили
Подробное описание методов
getReader
public HTMLEditorKit.ParserCallback getReader(int pos)
HTMLDocument.HTMLReader. Подклассы могут переопределить этот метод, чтобы изменить структуру документа по своему усмотрению (например, для обработки пользовательских тегов или структурного представления элементов стиля символов).- Параметры:
-
pos- начальная позиция - Возвращает:
- ридер, используемый парсером для загрузки документа
getReader
public HTMLEditorKit.ParserCallback getReader(int pos, int popDepth, int pushDepth, HTML.Tag insertTag)
HTMLDocument.HTMLReader. Подклассы могут переопределить этот метод, чтобы изменить структуру документа по своему усмотрению (например, для обработки пользовательских тегов или структурного представления элементов стиля символов). Это удобный метод для getReader(int, int, int, HTML.Tag, TRUE).
- Параметры:
-
pos- начальная позиция -
popDepth- количествоElementSpec.EndTagTypesдля генерации перед вставкой -
pushDepth- количествоElementSpec.StartTagTypesс направлениемElementSpec.JoinNextDirection, которые должны быть сгенерированы перед вставкой, но после генерации закрывающих тегов -
insertTag- первый тег для начала вставки в документ - Возвращает:
- ридер, используемый парсером для загрузки документа
getBase
public URL getBase()
- Возвращает:
- базовое расположение
setBase
public void setBase(URL u)
Это также устанавливает базу 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)
- Параметры:
-
t- запрашиваемыйHTML.Tag - Возвращает:
Iteratorдля заданного тега HTML- См. также:
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 - Возвращает:
- базовый элемент
Ограничение по количеству токенов
public void setTokenThreshold(int n)
- Параметры:
-
n- количество токенов для буферизации
Получить ограничение по количеству токенов
public int getTokenThreshold()
Integer.MAX_VALUE.- Возвращает:
- количество токенов для буферизации
Установить сохранение неизвестных тегов
public void setPreservesUnknownTags(boolean preservesTags)
- Параметры:
-
preservesTags- true, если неизвестные теги должны быть сохранены в модели; в противном случае теги игнорируются - См. также:
Получить сохранение неизвестных тегов
public boolean getPreservesUnknownTags()
- Возвращает:
- true, если неизвестные теги должны сохраняться при парсинге
- См. также:
Обработать событие гиперссылки HTML-фрейма
public void processHTMLFrameHyperlinkEvent(HTMLFrameHyperlinkEvent e)
HTMLFrameHyperlinkEvent. Помимо стандартной информации, содержащейся в HyperlinkEvent, это событие содержит элемент, соответствующий фрейму, в котором произошёл клик (элемент-источник), и имя целевого элемента. Имя целевого элемента может принимать 4 значения:
- _self
- _parent
- _top
- имя фрейма
HTML.Attribute.SRC и генерируется событие ChangedUpdate. Если target - _parent, удаляется родительский элемент (элемент <FRAMESET>) и вставляется новый элемент <FRAME>, устанавливая атрибут HTML.Attribute.SRC в значение целевого URL и генерируя события RemovedUpdate и InsertUpdate.
Если target - _top, этот метод ничего не делает. Обработка _top выполняется в представлении фрейма, а именно в FrameView. Поскольку _top подразумевает замену всего документа, эту обработку разумнее выполнить вне заменяемого документа.
Если target - имя фрейма, в иерархии элементов ищется элемент с соответствующим именем, его атрибут HTML.Attribute.SRC обновляется, и генерируется событие ChangedUpdate.
- Параметры:
-
e- событие
Установить парсер
public void setParser(HTMLEditorKit.Parser parser)
setInnerHTML и setOuterHTML. HTMLEditorKit.createDefaultDocument установит парсер за вас. Если вы создаёте HTMLDocument вручную, убедитесь, что установили парсер должным образом.
- Параметры:
-
parser- парсер для вставки текста - С версии:
- 1.3
Получить парсер
public HTMLEditorKit.Parser getParser()
- Возвращает:
- используемый парсер для вставки текста
- С версии:
- 1.3
Установить внутренний HTML
public void setInnerHTML(Element elem, String htmlText) throws BadLocationException, IOException
Это будет рассматриваться как по меньшей мере два события: 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- строка, которая будет обработана как HTML и назначенаelem - Исключения:
-
IllegalArgumentException- еслиelemявляется листом -
IllegalStateException- если парсерHTMLEditorKit.Parserне определён -
BadLocationException- если замена невозможна из-за структурной проблемы -
IOException- если произошла ошибка ввода-вывода - С версии:
- 1.3
Установить внешний HTML
public void setOuterHTML(Element elem, String htmlText) throws BadLocationException, IOException
Это будет рассматриваться как по меньшей мере два события: 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- строка, которая будет обработана как HTML и вставлена вместоelem - Исключения:
-
IllegalStateException- если для HTMLEditorKit.Parser не задано значение -
BadLocationException- если замена невозможна из-за структурной проблемы -
IOException- если произошла ошибка ввода-вывода - С версии:
- 1.3
Вставить после начала
public void insertAfterStart(Element elem, String htmlText) throws BadLocationException, IOException
Рассмотрим следующую структуру (параметр 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- строка, которая будет обработана как HTML и назначенаelem - Исключения:
-
IllegalArgumentException- еслиelemявляется листом -
IllegalStateException- если для документа не задан парсер HTMLEditorKit -
BadLocationException- если вставка невозможна из-за структурной проблемы -
IOException- если произошла ошибка ввода-вывода - С версии:
- 1.3
insertBeforeEnd
public void insertBeforeEnd(Element elem, String htmlText) throws BadLocationException, IOException
Если у 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.
- Parameters:
-
elem— элемент, являющийся корнем для нового текста -
htmlText— строка, которая будет обработана и назначенаelem - Throws:
-
IllegalArgumentException— еслиelemявляется листом -
IllegalStateException— если для документа не установлен HTMLEditorKit.Parser -
BadLocationException— если вставка невозможна из-за структурной проблемы -
IOException— если произошла ошибка ввода-вывода - Since:
- 1.3
insertBeforeStart
public void insertBeforeStart(Element elem, String htmlText) throws BadLocationException, IOException
Рассмотрим следующую структуру (параметр elem выделен жирным шрифтом).
<body>
|
<div>
/ \
<p> <p>
Вызов insertBeforeStart(elem,
"<ul><li>") приводит к следующей структуре (новые элементы выделены синим цветом).
<body>
/ \
<ul> <div>
/ / \
<li> <p> <p>
В отличие от метода insertAfterStart, новые элементы становятся соседними элементами указанного элемента, а не дочерними.
Если любой из параметров elem или htmlText имеет значение null, изменения в документе не производятся.
Для корректной работы документ должен иметь установленный HTMLEditorKit.Parser. Это будет так, если документ был создан из HTMLEditorKit с помощью метода createDefaultDocument.
- Parameters:
-
elem— элемент, перед которым вставляется содержимое -
htmlText— строка, которая будет обработана и вставлена передelem - Throws:
-
IllegalStateException— если для документа не установлен HTMLEditorKit.Parser -
BadLocationException— если вставка невозможна из-за структурной проблемы -
IOException— если произошла ошибка ввода-вывода - Since:
- 1.3
insertAfterEnd
public void insertAfterEnd(Element elem, String htmlText) throws BadLocationException, IOException
Рассмотрим следующую структуру (параметр elem выделен жирным шрифтом).
<body>
|
<div>
/ \
<p> <p>
Вызов insertAfterEnd(elem, "<ul><li>") приводит к следующей структуре (новые элементы выделены синим цветом).
<body>
/ \
<div> <ul>
/ \ \
<p> <p> <li>
В отличие от метода insertBeforeEnd, новые элементы становятся соседними элементами указанного элемента, а не дочерними.
Если любой из параметров elem или htmlText имеет значение null, изменения в документе не производятся.
Для корректной работы документ должен иметь установленный HTMLEditorKit.Parser. Это будет так, если документ был создан из HTMLEditorKit с помощью метода createDefaultDocument.
- Parameters:
-
elem— элемент, после которого вставляется содержимое -
htmlText— строка, которая будет обработана и вставлена послеelem - Throws:
-
IllegalStateException— если для документа не установлен HTMLEditorKit.Parser -
BadLocationException— если вставка невозможна из-за структурной проблемы -
IOException— если произошла ошибка ввода-вывода - Since:
- 1.3
getElement
public Element getElement(String id)
Attribute. Если элемент не найден, возвращается null. Обратите внимание, что этот метод работает с Attribute, а не с тегом символа. В следующем фрагменте HTML: <a id="HelloThere"> атрибут — 'id', а тег символа — 'a'. Это вспомогательный метод для getElement(RootElement, HTML.Attribute.id, id). Он не потокобезопасен.- Parameters:
-
id— строка, представляющая искомыйAttribute - Returns:
- элемент с заданным
Attributeилиnull, если он не найден, илиnull, еслиidравенnull - Since:
- 1.3
- See Also:
getElement
public Element getElement(Element e, Object attribute, Object value)
e, содержащий атрибут attribute со значением value, или null, если такой элемент не найден. Этот метод не потокобезопасен.- Parameters:
-
e— корневой элемент, с которого начинается поиск -
attribute— искомыйAttribute -
value— значения для указанногоAttribute - Returns:
- элемент с заданным
Attributeи заданнымvalue, илиnull, если он не найден - Since:
- 1.3
- See Also:
fireChangedUpdate
protected void fireChangedUpdate(DocumentEvent e)
- Overrides:
-
fireChangedUpdateв классеAbstractDocument - Parameters:
-
e— событие - See Also:
fireUndoableEditUpdate
protected void fireUndoableEditUpdate(UndoableEditEvent e)
- Overrides:
-
fireUndoableEditUpdateв классеAbstractDocument - Parameters:
-
e— событие - See Also:
© 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/swing/text/html/HTMLDocument.html