Spec-Zone.ru › OpenJDK 17

Класс 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) для возвращения новой реализации ридера. Документация для HTMLReader должна быть проконсультирована для получения подробностей о создаваемой по умолчанию структуре. Цель состоит в том, чтобы документ был без потерь (хотя воспроизведение формата HTML может привести к другому формату).

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

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

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

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

Изменение HTMLDocument

В дополнение к методам, предоставляемым документом и документом с форматированием для изменения 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 .

Резюме

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

HTML-содержимое примера выше
Пример 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(AbstractDocument.Content c, StyleSheet styles)
Создает HTML-документ с заданной реализацией хранилища содержимого и заданным механизмом хранения стилей/атрибутов.
HTMLDocument(StyleSheet styles)
Создает HTML-документ с реализацией хранилища содержимого по умолчанию и заданным механизмом хранения стилей/атрибутов.

Краткое описание методов

Модификатор и тип Метод Описание
protected void create(DefaultStyledDocument.ElementSpec[] data)
Заменяет содержимое документа заданными спецификациями элементов.
protected Element createBranchElement(Element parent, AttributeSet a)
Создает элемент ветви документа, который может содержать другие элементы.
protected AbstractDocument.AbstractElement createDefaultRoot()
Создает корневой элемент, используемый для представления стандартной структуры документа.
protected Element createLeafElement(Element parent, AttributeSet a, int p0, int p1)
Создает элемент листа документа, непосредственно представляющий текст (не имеет дочерних элементов).
protected void fireChangedUpdate(DocumentEvent e)
Уведомляет всех слушателей, которые зарегистрировали интерес к уведомлению об этом типе события.
protected void fireUndoableEditUpdate(UndoableEditEvent e)
Уведомляет всех слушателей, которые зарегистрировали интерес к уведомлению об этом типе события.
URL getBase()
Возвращает местоположение для разрешения относительных URL-адресов.
Element getElement(String id)
Возвращает элемент, имеющий заданный идентификатор Attribute.
Element getElement(Element e, Object attribute, Object value)
Возвращает дочерний элемент e, который содержит атрибут attribute со значением value, или null если такой не найден.
HTMLDocument.Iterator getIterator(HTML.Tag t)
Извлекает итератор для указанного HTML-тега.
HTMLEditorKit.Parser getParser()
Возвращает парсер, используемый при вставке HTML в существующий документ.
boolean getPreservesUnknownTags()
Возвращает поведение, наблюдаемое парсером при обнаружении неизвестных тегов.
HTMLEditorKit.ParserCallback getReader(int pos)
Извлекает ридер для парсера, используемый при загрузке документа с HTML.
HTMLEditorKit.ParserCallback getReader(int pos, int popDepth, int pushDepth, HTML.Tag insertTag)
Возвращает ридер для парсера, используемый для загрузки документа с HTML.
StyleSheet getStyleSheet()
Извлекает StyleSheet со специфическими для документа правилами отображения (CSS), указанными в самом HTML-документе.
int getTokenThreshold()
Получает количество токенов для буферизации перед попыткой обновления структуры элементов документов.
protected void insert(int offset, DefaultStyledDocument.ElementSpec[] data)
Вставляет новые элементы в больших объемах.
void insertAfterEnd(Element elem, String htmlText)
Вставляет HTML, указанный как строка, после конца данного элемента.
void insertAfterStart(Element elem, String htmlText)
Вставляет HTML, указанный как строка, в начале элемента.
void insertBeforeEnd(Element elem, String htmlText)
Вставляет HTML, указанный как строка, в конце элемента.
void insertBeforeStart(Element elem, String htmlText)
Вставляет HTML, указанный как строка, перед началом данного элемента.
protected void insertUpdate(AbstractDocument.DefaultDocumentEvent chng, AttributeSet attr)
Обновляет структуру документа в результате вставки текста.
void processHTMLFrameHyperlinkEvent(HTMLFrameHyperlinkEvent e)
Обрабатывает HyperlinkEvents, которые генерируются документами в HTML-рамке.
void setBase(URL u)
Устанавливает местоположение для разрешения относительных URL-адресов.
void setInnerHTML(Element elem, String htmlText)
Заменяет потомков данного элемента содержимым, указанным как HTML-строка.
void setOuterHTML(Element elem, String htmlText)
Заменяет данный элемент в родителе содержимым, указанным как HTML-строка.
void setParagraphAttributes(int offset, int length, AttributeSet s, boolean replace)
Устанавливает атрибуты для абзаца.
void setParser(HTMLEditorKit.Parser parser)
Устанавливает парсер, используемый методами, которые вставляют html в существующий документ, такие как setInnerHTML, и setOuterHTML.
void setPreservesUnknownTags(boolean preservesTags)
Определяет, как парсер обрабатывает неизвестные теги.
void setTokenThreshold(int n)
Устанавливает количество токенов для буферизации перед попыткой обновления структуры элементов документов.

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

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

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

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

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

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

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

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

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

ДополнительныеКомментарии

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

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

HTMLDocument

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

HTMLDocument

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

HTMLDocument

public HTMLDocument(AbstractDocument.Content c, StyleSheet styles)
Создаёт документ HTML с заданной реализацией хранения содержимого и заданным механизмом хранения стилей/атрибутов.
Параметры:
c - контейнер для содержимого
styles - стили

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

getReader

public HTMLEditorKit.ParserCallback getReader(int pos)
Получает чтец для использования парсером при загрузке документа с HTML. Реализует возврат экземпляра HTMLDocument.HTMLReader. Подклассы могут переопределить этот метод для изменения структуры документа по желанию. (Например, для обработки пользовательских тегов или структурного представления элементов стиля символов.)
Параметры:
pos - начальная позиция
Возвращает:
чтец, используемый парсером для загрузки документа

getReader

public HTMLEditorKit.ParserCallback getReader(int pos, int popDepth, int pushDepth, HTML.Tag insertTag)
Возвращает чтец для использования парсером при загрузке документа с HTML. Реализует возврат экземпляра HTMLDocument.HTMLReader. Подклассы могут переопределить этот метод для изменения структуры документа по желанию. (Например, для обработки пользовательских тегов или структурного представления элементов стиля символов.)

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

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

getBase

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

setBase

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

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

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

insert

protected void insert(int offset, DefaultStyledDocument.ElementSpec[] data) throws BadLocationException
Вставляет новые элементы в объёме. Таким образом элементы создаются в документе. Парсинг определяет необходимую структуру и создаёт спецификацию в виде набора маркеров, описывающих правку, оставляя документ свободным от блокировки записи. Этот метод затем может быть вызван группами чтецом для получения блокировки записи на более короткий срок (т.е. в то время как документ фактически изменяется).
Переопределяет:
insert в классе DefaultStyledDocument
Параметры:
offset - начальный смещение
data - данные элемента
Исключения:
BadLocationException - если заданная позиция не представляет собой допустимое расположение в связанном документе.

insertUpdate

protected void insertUpdate(AbstractDocument.DefaultDocumentEvent chng, AttributeSet attr)
Обновляет структуру документа в результате вставки текста. Это произойдёт в рамках блокировки записи. Эта реализация просто анализирует вставленное содержимое на предмет разрывов строк и создаёт набор инструкций для буфера элементов.
Переопределяет:
insertUpdate в классе DefaultStyledDocument
Параметры:
chng - описание изменения документа
attr - атрибуты

create

protected void create(DefaultStyledDocument.ElementSpec[] data)
Заменяет содержимое документа заданными спецификациями элементов. Вызывается перед insert, если загрузка выполняется по частям. Это единственный вызываемый метод, если документ загружается целиком в один запрос.
Переопределяет:
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.
Возвращает:
количество маркеров для буферизации
END_OF_DOCUMENT_MARKER

setPreservesUnknownTags

public void setPreservesUnknownTags(boolean preservesTags)
Определяет, как неизвестные теги обрабатываются анализатором. Если установлено значение true, неизвестные теги помещаются в модель, в противном случае они отбрасываются.
Parameters:
preservesTags - true, если неизвестные теги должны сохраняться в модели, в противном случае теги отбрасываются
See Also:
  • HTML.Tag

getPreservesUnknownTags

public boolean getPreservesUnknownTags()
Возвращает поведение анализатора при обнаружении неизвестных тегов.
Returns:
true, если неизвестные теги должны сохраняться при разборе
See Also:
  • HTML.Tag

processHTMLFrameHyperlinkEvent

public void processHTMLFrameHyperlinkEvent(HTMLFrameHyperlinkEvent e)
Обрабатывает HyperlinkEvents, генерируемые документами во фрейме HTML. Тип HyperlinkEvent, как предполагает параметр, это HTMLFrameHyperlinkEvent. В дополнение к обычной информации, содержащейся в HyperlinkEvent, данное событие содержит элемент, соответствующий фрейму, в котором произошел щелчок (элемент-источник), и имя целевого фрейма. Имя целевого фрейма может принимать 4 значения:
  • _self
  • _parent
  • _top
  • имя фрейма
Если целевой фрейм _self, то действие заключается в изменении значения атрибута HTML.Attribute.SRC и срабатывает событие ChangedUpdate.

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

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

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

Parameters:
e - событие

setParser

public void setParser(HTMLEditorKit.Parser parser)
Устанавливает анализатор, используемый методами, которые вставляют HTML в существующий документ, такие как setInnerHTML, и setOuterHTML.

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

Parameters:
parser - анализатор для вставки текста
Since:
1.3

getParser

public HTMLEditorKit.Parser getParser()
Возвращает анализатор, используемый при вставке HTML в существующий документ.
Returns:
используемый для вставки текста анализатор
Since:
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.

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
Заменяет заданный элемент в родителе содержимым, заданным как строка 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.

Parameters:
elem - элемент для замены
htmlText - строка, которая будет обработана анализатором и вставлена вместо elem
Throws:
IllegalStateException - если анализатор HTMLEditorKit.Parser не задан
BadLocationException - если замена невозможна из-за структурных проблем
IOException - если произошла ошибка ввода/вывода
Since:
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.

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
Вставляет 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.

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
Вставляет HTML, заданный в виде строки, перед началом заданного элемента.

Рассмотрим следующую структуру (параметр 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
Вставляет HTML, заданный в виде строки, после конца заданного элемента.

Рассмотрим следующую структуру (параметр 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:
  • HTML.Attribute

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:
  • HTML.Attribute

fireChangedUpdate

protected void fireChangedUpdate(DocumentEvent e)
Уведомляет всех слушателей, которые проявили интерес к уведомлениям об этом типе события. Экземпляр события создается лениво с использованием параметров, переданных в метод fire.
Overrides:
fireChangedUpdate в классе AbstractDocument
Parameters:
e - событие
See Also:
  • EventListenerList

fireUndoableEditUpdate

protected void fireUndoableEditUpdate(UndoableEditEvent e)
Уведомляет всех слушателей, которые проявили интерес к уведомлениям об этом типе события. Экземпляр события создается лениво с использованием параметров, переданных в метод fire.
Overrides:
fireUndoableEditUpdate в классе AbstractDocument
Parameters:
e - событие
See Also:
  • EventListenerList

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

Spec-Zone.ru

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