Класс 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 - Возвращает:
- базовый элемент
setTokenThreshold
public void setTokenThreshold(int n)
- Параметры:
-
n- количество токенов для буферизации
getTokenThreshold
public int getTokenThreshold()
Integer.MAX_VALUE.- Возвращает:
- количество токенов для буферизации
setPreservesUnknownTags
public void setPreservesUnknownTags(boolean preservesTags)
- Parameters:
-
preservesTags- true, если неизвестные теги должны сохраняться в модели, в противном случае теги отбрасываются - See Also:
getPreservesUnknownTags
public boolean getPreservesUnknownTags()
- Returns:
- true, если неизвестные теги должны сохраняться при разборе
- See Also:
processHTMLFrameHyperlinkEvent
public void processHTMLFrameHyperlinkEvent(HTMLFrameHyperlinkEvent e)
HyperlinkEvents события, генерируемые документами в HTML-рамке. Тип события, как предполагает параметр, — 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 — имя рамки, ищется элемент с именем, равным target, обновляется атрибут HTML.Attribute.SRC и генерируется событие ChangedUpdate.
- Parameters:
-
e- событие
setParser
public void setParser(HTMLEditorKit.Parser parser)
setInnerHTML, и setOuterHTML. HTMLEditorKit.createDefaultDocument задаст анализатор за вас. Если вы создаете HTMLDocument вручную, убедитесь, что установили анализатор соответствующим образом.
- Parameters:
-
parser- анализатор, который будет использоваться для вставки текста - Since:
- 1.3
getParser
public HTMLEditorKit.Parser getParser()
- Returns:
- используемый анализатор для вставки текста
- Since:
- 1.3
setInnerHTML
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.
- Parameters:
-
elem- элемент ветвления, потомки которого будут заменены -
htmlText- строка, которая будет обработана и назначенаelem - Throws:
-
IllegalArgumentException- еслиelemявляется листом -
IllegalStateException- если анализаторHTMLEditorKit.Parserне определён -
BadLocationException- если замена невозможна из-за структурной проблемы -
IOException- если произошла ошибка ввода-вывода - Since:
- 1.3
setOuterHTML
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.
- Parameters:
-
elem- элемент, который нужно заменить -
htmlText- строка, которая будет обработана и вставлена вместоelem - Throws:
-
IllegalStateException- если анализатор HTMLEditorKit.Parser не установлен -
BadLocationException- если замена невозможна из-за структурной проблемы -
IOException- если произошла ошибка ввода-вывода - Since:
- 1.3
insertAfterStart
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.
- Parameters:
-
elem- элемент ветвления, который будет корнем для нового текста -
htmlText- строка, которая будет обработана и назначенаelem - Throws:
-
IllegalArgumentException- еслиelemявляется листом -
IllegalStateException- если анализатор HTMLEditorKit.Parser не установлен в документе -
BadLocationException- если вставка невозможна из-за структурной проблемы -
IOException- если произошла ошибка ввода-вывода - Since:
- 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, 2023, 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/21/docs/api/java.desktop/javax/swing/text/html/HTMLDocument.html