Spec-Zone.ru › OpenJDK 8

Класс 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

В дополнение к методам, предоставляемым 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: red; }
     </style>
   </head>
   <body>
     <div id="BOX">
       <p>Paragraph 1</p>
       <p>Paragraph 2</p>
     </div>
   </body>
 </html>

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

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

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

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

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

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

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

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

Резюме

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

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

Абзац 1

Абзац 2

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

Абзац 1

Абзац 2

Абзац 1

Абзац 2

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

Абзац 1

Абзац 2

Абзац 1

Абзац 2

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

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

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

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

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

class  HTMLDocument.HTMLReader

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

static class  HTMLDocument.Iterator

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

class  HTMLDocument.RunElement

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

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

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

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

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

Поля

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

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

Поля, унаследованные от класса javax.swing.text.DefaultStyledDocument

buffer, BUFFER_SIZE_DEFAULT

Поля, унаследованные от класса javax.swing.text.AbstractDocument

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

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

StreamDescriptionProperty, TitleProperty

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

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

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

HTMLDocument(AbstractDocument.Content c, StyleSheet styles)

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

HTMLDocument(StyleSheet styles)

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

Методы

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

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

protected Element createBranchElement(Element parent, AttributeSet a)

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

protected AbstractDocument.AbstractElement createDefaultRoot()

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

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

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

protected void fireChangedUpdate(DocumentEvent e)

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

protected void fireUndoableEditUpdate(UndoableEditEvent e)

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

URL getBase()

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

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

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

Element getElement(String id)

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

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).

Параметры:
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
Возвращает:
итератор для указанного тега HTML
См. также:
HTML.Tag

createLeafElement

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

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

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

createBranchElement

protected Element createBranchElement(Element parent,
                                      AttributeSet a)

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

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

createDefaultRoot

protected AbstractDocument.AbstractElement createDefaultRoot()

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

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

setTokenThreshold

public void setTokenThreshold(int n)

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

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

getTokenThreshold

public int getTokenThreshold()

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

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

setPreservesUnknownTags

public void setPreservesUnknownTags(boolean preservesTags)

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

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

getPreservesUnknownTags

public boolean getPreservesUnknownTags()

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

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

processHTMLFrameHyperlinkEvent

public void processHTMLFrameHyperlinkEvent(HTMLFrameHyperlinkEvent e)

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

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

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

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

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

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

setParser

public void setParser(HTMLEditorKit.Parser parser)

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

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

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

getParser

public HTMLEditorKit.Parser getParser()

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

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

setInnerHTML

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

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

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

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

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

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

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

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

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

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

setOuterHTML

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

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

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

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

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

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

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

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

<body>
      |
     <ul>
       \
       <li>

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

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

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

insertAfterStart

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

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

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

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

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

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

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

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

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

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

insertBeforeEnd

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

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

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

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

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

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

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

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

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

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

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

insertBeforeStart

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

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

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

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

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

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

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

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

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

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

insertAfterEnd

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

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

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

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

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

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

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

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

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

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

getElement

public Element getElement(String id)

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

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

getElement

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

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

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

fireChangedUpdate

protected void fireChangedUpdate(DocumentEvent e)

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

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

fireUndoableEditUpdate

protected void fireUndoableEditUpdate(UndoableEditEvent e)

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

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

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

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