Spec-Zone.ru › OpenJDK 25

Класс HTMLEditorKit

java.lang.Object
javax.swing.text.EditorKit
javax.swing.text.DefaultEditorKit
javax.swing.text.StyledEditorKit
javax.swing.text.html.HTMLEditorKit
Все реализованные интерфейсы:
Serializable, Cloneable, Accessible
public class HTMLEditorKit extends StyledEditorKit implements Accessible
Текстовый компонент Swing JEditorPane поддерживает различные типы содержимого с помощью механизма подключаемых модулей, называемого EditorKit. Поскольку HTML является очень популярным форматом содержимого, некоторая поддержка предоставляется по умолчанию. Поддержка по умолчанию обеспечивается этим классом, который поддерживает HTML версии 3.2 (с некоторыми расширениями) и постепенно переходит к версии 4.0. Тег <applet> не поддерживается, но для тега <object> предусмотрена некоторая поддержка.

У предоставляемого HTML EditorKit есть несколько целей, влияющих на способ моделирования HTML. Они существенно повлияли на его проектирование.

Поддержка редактирования
Может показаться вполне очевидным, что подключаемый модуль для JEditorPane должен поддерживать редактирование, однако это обстоятельство имеет несколько важных последствий для проектирования. Существует значительное количество HTML-документов, которые не соответствуют спецификации HTML. Чтобы их можно было редактировать, их необходимо в некоторой степени нормализовать до корректного вида. Кроме того, пользователям не нравится чрезмерное редактирование структуры, поэтому предпочтительнее использовать традиционные приемы редактирования текста, а не точную структуру HTML, заданную в документе.

Моделирование HTML обеспечивается классом HTMLDocument. В его документации подробно описано, как моделируется HTML. Поддержка редактирования в значительной степени использует возможности текстового пакета.

Расширяемость и масштабируемость
Чтобы максимально повысить полезность этого комплекта, было приложено немало усилий для обеспечения его расширяемости. Вот некоторые из его особенностей.
  1. Парсер можно заменить. Парсером по умолчанию является парсер Hot Java, основанный на DTD. Можно использовать другую DTD или совершенно другой парсер. Чтобы изменить парсер, повторно реализуйте метод getParser. Парсер по умолчанию загружается динамически при первом обращении к нему, поэтому файлы классов никогда не будут загружены, если используется альтернативный парсер. Парсер по умолчанию находится в отдельном пакете parser, вложенном в этот пакет.
  2. Парсер управляет ParserCallback, предоставляемым HTMLDocument. Чтобы изменить обратный вызов, создайте подкласс HTMLDocument и повторно реализуйте метод createDefaultDocument, возвращающий документ, который создает другой reader. Reader определяет структуру документа. Хотя Document по умолчанию поддерживает HTML, ничто не мешает поддерживать не-HTML-теги, приводящие к альтернативной структуре элементов.
  3. Представление моделей по умолчанию обеспечивается иерархией реализаций View, поэтому можно легко настроить отображение конкретного элемента или добавить поддержку новых типов элементов, предоставив новые реализации View. Набор представлений по умолчанию предоставляется классом HTMLFactory. Его можно легко изменить, создав подкласс HTMLFactory или заменив его и повторно реализовав метод getViewFactory так, чтобы он возвращал альтернативную фабрику.
  4. Реализации View в основном используют атрибуты CSS, хранящиеся в представлениях. Благодаря этому можно сопоставить несколько представлений с одной моделью, и они будут существенно различаться. Это может быть особенно полезно при печати. Для отображения большинство атрибутов HTML преобразуются в атрибуты CSS. Это помогает сделать реализации View более универсальными.
Асинхронная загрузка
Обработка больших документов требует значительных усилий парсера и занимает некоторое время. По умолчанию этот комплект создает документы, которые загружаются асинхронно, если загружаются с помощью JEditorPane.setPage. Это управляется свойством документа. Чтобы изменить такое поведение, можно переопределить метод createDefaultDocument. Пакетная обработка выполняется классом HTMLDocument.HTMLReader. Фактическая работа выполняется классами DefaultStyledDocument и AbstractDocument из текстового пакета.
Настройка с учетом текущего LAF
HTML предоставляет хорошо известный набор возможностей, не задавая точные характеристики отображения. В Swing предусмотрен механизм тем для реализаций оформления look-and-feel. Желательно, чтобы look-and-feel передавал характеристики отображения представлениям HTML. Например, пользователю с ослабленным зрением могут потребоваться высокая контрастность и шрифты крупнее обычных.

Поддержку этой возможности обеспечивает класс StyleSheet. На представление HTML можно существенно повлиять, задав свойство StyleSheet в EditorKit.

Без потери данных
EditorKit умеет читать документы и сохранять их. Обычно пользователям больше всего нравится, когда между этими двумя операциями данные не теряются. Политика HTMLEditorKit заключается в сохранении нераспознанных или не обязательно видимых элементов, чтобы их впоследствии можно было записать. Поэтому модель HTML-документа должна содержать всю информацию, обнаруженную при чтении документа. В некоторых случаях это ограничивается необходимостью поддерживать редактирование (например, некорректные документы иногда необходимо нормализовать). Основной принцип состоит в том, что информация не должна теряться, хотя некоторые элементы могут быть синтезированы для создания более корректной модели или перемещены.

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

Модификатор и тип Класс Описание
static class  HTMLEditorKit.HTMLFactory
Фабрика для создания представлений HTML.
static class  HTMLEditorKit.HTMLTextAction
Абстрактное действие, предоставляющее несколько вспомогательных методов, которые могут быть полезны при вставке HTML в существующий документ.
static class  HTMLEditorKit.InsertHTMLTextAction
InsertHTMLTextAction можно использовать для вставки произвольной строки HTML в существующий HTML-документ.
static class  HTMLEditorKit.LinkController
Класс для отслеживания связанного компонента и вызова в нем событий гиперссылок при необходимости.
static class  HTMLEditorKit.Parser
Интерфейс, который должен поддерживаться парсером.
static class  HTMLEditorKit.ParserCallback
Результат парсинга используется этими методами обратного вызова.

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

StyledEditorKit.AlignmentAction, StyledEditorKit.BoldAction, StyledEditorKit.FontFamilyAction, StyledEditorKit.FontSizeAction, StyledEditorKit.ForegroundAction, StyledEditorKit.ItalicAction, StyledEditorKit.StyledTextAction, StyledEditorKit.UnderlineAction

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

DefaultEditorKit.BeepAction, DefaultEditorKit.CopyAction, DefaultEditorKit.CutAction, DefaultEditorKit.DefaultKeyTypedAction, DefaultEditorKit.InsertBreakAction, DefaultEditorKit.InsertContentAction, DefaultEditorKit.InsertTabAction, DefaultEditorKit.PasteAction

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

Модификатор и тип Поле Описание
static final String BOLD_ACTION
Идентификатор действия для выделения полужирным шрифтом
static final String COLOR_ACTION
Идентификатор действия для выбора цвета. Цвет передается в качестве аргумента.
static final String DEFAULT_CSS
Файл каскадной таблицы стилей по умолчанию, задающий представления тегов.
static final String FONT_CHANGE_BIGGER
Идентификатор действия для увеличения размера шрифта до следующего значения
static final String FONT_CHANGE_SMALLER
Идентификатор действия для уменьшения размера шрифта до следующего значения
static final String IMG_ALIGN_BOTTOM
Выравнивание изображений по нижнему краю.
static final String IMG_ALIGN_MIDDLE
Выравнивание изображений по центру.
static final String IMG_ALIGN_TOP
Выравнивание изображений по верхнему краю.
static final String IMG_BORDER
Выравнивание изображений по границе.
static final String ITALIC_ACTION
Идентификатор действия для выделения курсивом
static final String LOGICAL_STYLE_ACTION
Идентификатор действия для выбора логического стиля. Логический стиль передается в качестве аргумента.
static final String PARA_INDENT_LEFT
Идентификатор действия для установки левого отступа абзаца
static final String PARA_INDENT_RIGHT
Идентификатор действия для установки правого отступа абзаца

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

backwardAction, beepAction, beginAction, beginLineAction, beginLineUpAction, beginParagraphAction, beginWordAction, copyAction, cutAction, defaultKeyTypedAction, deleteNextCharAction, deleteNextWordAction, deletePrevCharAction, deletePrevWordAction, downAction, endAction, endLineAction, endLineDownAction, EndOfLineStringProperty, endParagraphAction, endWordAction, forwardAction, insertBreakAction, insertContentAction, insertTabAction, nextWordAction, pageDownAction, pageUpAction, pasteAction, previousWordAction, readOnlyAction, selectAllAction, selectionBackwardAction, selectionBeginAction, selectionBeginLineAction, selectionBeginParagraphAction, selectionBeginWordAction, selectionDownAction, selectionEndAction, selectionEndLineAction, selectionEndParagraphAction, selectionEndWordAction, selectionForwardAction, selectionNextWordAction, selectionPreviousWordAction, selectionUpAction, selectLineAction, selectParagraphAction, selectWordAction, upAction, writableAction

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

Конструктор Описание
HTMLEditorKit()
Создает HTMLEditorKit, создает StyleContext и загружает таблицу стилей.

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

Модификатор и тип Метод Описание
Object clone()
Создает копию набора инструментов редактора.
Document createDefaultDocument()
Создает неинициализированную модель хранения текста, подходящую для этого типа редактора.
protected void createInputAttributes(Element element, MutableAttributeSet set)
Копирует пары ключ/значение из AttributeSet объекта element в set.
void deinstall(JEditorPane c)
Вызывается при удалении набора инструментов из JEditorPane.
AccessibleContext getAccessibleContext()
возвращает AccessibleContext, связанный с этим набором инструментов редактора
Action[] getActions()
Получает список команд для редактора.
String getContentType()
Возвращает MIME-тип данных, поддержку которых представляет этот набор инструментов.
Cursor getDefaultCursor()
Возвращает курсор по умолчанию.
MutableAttributeSet getInputAttributes()
Получает входные атрибуты, используемые действиями редактирования форматированного текста.
Cursor getLinkCursor()
Возвращает курсор, используемый при наведении на гиперссылки.
protected HTMLEditorKit.Parser getParser()
Получает парсер для чтения потоков HTML.
StyleSheet getStyleSheet()
Получает набор стилей, используемых в данный момент для отображения элементов HTML.
ViewFactory getViewFactory()
Получает фабрику, подходящую для создания представлений любых моделей, созданных этим набором инструментов.
void insertHTML(HTMLDocument doc, int offset, String html, int popDepth, int pushDepth, HTML.Tag insertTag)
Вставляет HTML в существующий документ.
void install(JEditorPane c)
Вызывается при установке набора инструментов в JEditorPane.
boolean isAutoFormSubmission()
Указывает, обрабатывается ли отправка HTML-формы автоматически или вызывается только FormSubmitEvent.
void read(Reader in, Document doc, int pos)
Вставляет содержимое из указанного потока.
void setAutoFormSubmission(boolean isAuto)
Задает, обрабатывается ли отправка HTML-формы автоматически или вызывается только FormSubmitEvent.
void setDefaultCursor(Cursor cursor)
Задает курсор по умолчанию.
void setLinkCursor(Cursor cursor)
Задает курсор, используемый при наведении на ссылки.
void setStyleSheet(StyleSheet s)
Задает набор стилей для отображения различных элементов HTML.
void write(Writer out, Document doc, int pos, int len)
Записывает содержимое документа в указанный поток в формате, подходящем для этого типа обработчика содержимого.

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

getCharacterAttributeRun

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

createCaret, read, write

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

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

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

DEFAULT_CSS

public static final String DEFAULT_CSS
Файл Cascading Style Sheet по умолчанию, настраивающий представления тегов.
См. также:
  • Значения констант полей

BOLD_ACTION

public static final String BOLD_ACTION
Идентификатор действия для полужирного начертания
См. также:
  • Значения констант полей

ITALIC_ACTION

public static final String ITALIC_ACTION
Идентификатор действия для курсивного начертания
См. также:
  • Значения констант полей

PARA_INDENT_LEFT

public static final String PARA_INDENT_LEFT
Идентификатор действия для увеличения левого отступа абзаца
См. также:
  • Значения констант полей

PARA_INDENT_RIGHT

public static final String PARA_INDENT_RIGHT
Идентификатор действия для увеличения правого отступа абзаца
См. также:
  • Значения констант полей

FONT_CHANGE_BIGGER

public static final String FONT_CHANGE_BIGGER
Идентификатор действия для увеличения размера шрифта до следующего значения
См. также:
  • Значения констант полей

FONT_CHANGE_SMALLER

public static final String FONT_CHANGE_SMALLER
Идентификатор действия для уменьшения размера шрифта до следующего значения
См. также:
  • Значения констант полей

COLOR_ACTION

public static final String COLOR_ACTION
Идентификатор действия для выбора цвета. Цвет передается в качестве аргумента
См. также:
  • Значения констант полей

LOGICAL_STYLE_ACTION

public static final String LOGICAL_STYLE_ACTION
Идентификатор действия для выбора логического стиля. Логический стиль передается в качестве аргумента
См. также:
  • Значения констант полей

IMG_ALIGN_TOP

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

IMG_ALIGN_MIDDLE

public static final String IMG_ALIGN_MIDDLE
Выравнивание изображений по центру.
См. также:
  • Значения констант полей

IMG_ALIGN_BOTTOM

public static final String IMG_ALIGN_BOTTOM
Выравнивание изображений по нижнему краю.
См. также:
  • Значения констант полей

IMG_BORDER

public static final String IMG_BORDER
Выравнивание изображений по границе.
См. также:
  • Значения констант полей

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

HTMLEditorKit

public HTMLEditorKit()
Создает HTMLEditorKit, создает StyleContext и загружает таблицу стилей.

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

getContentType

public String getContentType()
Возвращает тип MIME данных, поддержку которых предоставляет этот комплект. Этот комплект поддерживает тип text/html.
Переопределяет:
getContentType в классе DefaultEditorKit
Возвращает:
тип

getViewFactory

public ViewFactory getViewFactory()
Получает фабрику, подходящую для создания представлений любых моделей, создаваемых этим комплектом.
Переопределяет:
getViewFactory в классе StyledEditorKit
Возвращает:
фабрику

createDefaultDocument

public Document createDefaultDocument()
Создает неинициализированную модель текстового хранилища, подходящую для этого типа редактора.
Переопределяет:
createDefaultDocument в классе StyledEditorKit
Возвращает:
модель

read

public void read(Reader in, Document doc, int pos) throws IOException, BadLocationException
Вставляет содержимое из указанного потока. Если doc является экземпляром HTMLDocument, этот метод считывает текст HTML 3.2. При вставке HTML в непустой документ вставка должна выполняться внутри элемента body; если вставка выполняется не в body, будет выброшено исключение. При вставке в непустой документ все теги вне body (head, title) будут отброшены.
Переопределяет:
read в классе DefaultEditorKit
Параметры:
in - поток для чтения
doc - место назначения для вставки
pos - позиция в документе, куда следует поместить содержимое
Выбрасывает:
IOException - при любой ошибке ввода-вывода
BadLocationException - если pos указывает на недопустимую позицию в документе
RuntimeException - (впоследствии будет BadLocationException), если pos недопустима

insertHTML

public void insertHTML(HTMLDocument doc, int offset, String html, int popDepth, int pushDepth, HTML.Tag insertTag) throws BadLocationException, IOException
Вставляет HTML в существующий документ.
Параметры:
doc - документ, в который выполняется вставка
offset - смещение для вставки HTML
html - строка HTML
popDepth - количество ElementSpec.EndTagTypes, которые нужно создать перед вставкой
pushDepth - количество ElementSpec.StartTagTypes с направлением ElementSpec.JoinNextDirection, которые нужно создать перед вставкой, но после создания конечных тегов
insertTag - первый тег, с которого начинается вставка в документ
Выбрасывает:
BadLocationException - если offset недопустим
IOException - при ошибке ввода-вывода
RuntimeException - (впоследствии будет BadLocationException), если pos недопустима

write

public void write(Writer out, Document doc, int pos, int len) throws IOException, BadLocationException
Записывает содержимое документа в указанный поток в формате, подходящем для обработчика содержимого этого типа.
Переопределяет:
write в классе DefaultEditorKit
Параметры:
out - поток для записи
doc - источник для записи
pos - позиция в документе, откуда следует получить содержимое
len - объем записываемого содержимого
Выбрасывает:
IOException - при любой ошибке ввода-вывода
BadLocationException - если pos указывает на недопустимую позицию в документе

install

public void install(JEditorPane c)
Вызывается при установке комплекта в JEditorPane.
Переопределяет:
install в классе StyledEditorKit
Параметры:
c - JEditorPane

deinstall

public void deinstall(JEditorPane c)
Вызывается при удалении комплекта из JEditorPane. Используется для отмены регистрации всех подключенных прослушивателей.
Переопределяет:
deinstall в классе StyledEditorKit
Параметры:
c - JEditorPane

setStyleSheet

public void setStyleSheet(StyleSheet s)
Задает набор стилей для отображения различных элементов HTML. Эти стили задаются в соответствии со спецификациями CSS. Каждый документ, создаваемый комплектом, получает копию таблицы стилей, в которую можно добавлять специфичные для документа стили. По умолчанию указанная StyleSheet используется совместно всеми экземплярами HTMLEditorKit. При необходимости этот метод следует переопределить, чтобы обеспечить более детальную настройку.
Параметры:
s - StyleSheet

getStyleSheet

public StyleSheet getStyleSheet()
Возвращает набор стилей, используемых в данный момент для отображения элементов HTML. По умолчанию загружается ресурс, указанный в DEFAULT_CSS, и используется совместно всеми экземплярами HTMLEditorKit.
Возвращает:
StyleSheet

getActions

public Action[] getActions()
Получает список команд редактора. Это список команд, поддерживаемых суперклассом, дополненный набором команд, определенных локально для операций со стилями.
Переопределяет:
getActions в классе StyledEditorKit
Возвращает:
список команд

createInputAttributes

protected void createInputAttributes(Element element, MutableAttributeSet set)
Копирует пары ключ/значение из AttributeSet элемента element в set. Атрибуты имен компонентов, значков и элементов не копируются. В подклассах может потребоваться уточнить, какие атрибуты следует копировать. Однако сначала обязательно удалите все атрибуты, содержащиеся в set.

Этот метод вызывается каждый раз, когда каретка перемещается в другую позицию.

Переопределяет:
createInputAttributes в классе StyledEditorKit
Параметры:
element - элемент
set - атрибуты

getInputAttributes

public MutableAttributeSet getInputAttributes()
Возвращает атрибуты ввода, используемые действиями редактирования форматированного текста.
Переопределяет:
getInputAttributes в классе StyledEditorKit
Возвращает:
набор атрибутов

setDefaultCursor

public void setDefaultCursor(Cursor cursor)
Задает курсор по умолчанию.
Параметры:
cursor - курсор
Начиная с версии:
1.3

getDefaultCursor

public Cursor getDefaultCursor()
Возвращает курсор по умолчанию.
Возвращает:
курсор
Начиная с версии:
1.3

setLinkCursor

public void setLinkCursor(Cursor cursor)
Задает курсор, используемый при наведении на ссылки.
Параметры:
cursor - курсор
Начиная с версии:
1.3

getLinkCursor

public Cursor getLinkCursor()
Возвращает курсор, используемый при наведении на гиперссылки.
Возвращает:
курсор
Начиная с версии:
1.3

isAutoFormSubmission

public boolean isAutoFormSubmission()
Указывает, обрабатывается ли отправка HTML-формы автоматически или генерируется только FormSubmitEvent.
Возвращает:
true, если отправка HTML-формы обрабатывается автоматически; в противном случае — false.
Начиная с версии:
1.5
См. также:
  • setAutoFormSubmission(boolean)

setAutoFormSubmission

public void setAutoFormSubmission(boolean isAuto)
Задает, должна ли отправка HTML-формы обрабатываться автоматически или генерироваться только FormSubmitEvent. По умолчанию установлено значение true.
Параметры:
isAuto - если true, отправка HTML-формы обрабатывается автоматически.
Начиная с версии:
1.5
См. также:
  • isAutoFormSubmission()
  • FormSubmitEvent

clone

public Object clone()
Создает копию комплекта редактора.
Переопределяет:
clone в классе StyledEditorKit
Возвращает:
копию
См. также:
  • Cloneable

getParser

protected HTMLEditorKit.Parser getParser()
Получает анализатор, используемый для чтения потоков HTML. Этот метод можно переопределить, чтобы предоставить другой анализатор. Реализация по умолчанию загружается динамически, чтобы избежать затрат на загрузку стандартного анализатора, если он не используется. По умолчанию используется анализатор HotJava с DTD HTML 3.2.
Возвращает:
анализатор

getAccessibleContext

public AccessibleContext getAccessibleContext()
возвращает AccessibleContext, связанный с этим комплектом редактора
Определен в:
getAccessibleContext в интерфейсе Accessible
Возвращает:
AccessibleContext, связанный с этим комплектом редактора
Начиная с версии:
1.4

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

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/swing/text/html/HTMLEditorKit.html

Spec-Zone.ru

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