Класс HTMLEditorKit
- Все реализованные интерфейсы:
Serializable, Cloneable, Accessible
public class HTMLEditorKit extends StyledEditorKit implements Accessible
У предоставляемого HTML EditorKit есть несколько целей, влияющих на способ моделирования HTML. Они существенно повлияли на его проектирование.
- Поддержка редактирования
- Может показаться вполне очевидным, что подключаемый модуль для JEditorPane должен поддерживать редактирование, однако это обстоятельство имеет несколько важных последствий для проектирования. Существует значительное количество HTML-документов, которые не соответствуют спецификации HTML. Чтобы их можно было редактировать, их необходимо в некоторой степени нормализовать до корректного вида. Кроме того, пользователям не нравится чрезмерное редактирование структуры, поэтому предпочтительнее использовать традиционные приемы редактирования текста, а не точную структуру HTML, заданную в документе.
Моделирование HTML обеспечивается классом
HTMLDocument. В его документации подробно описано, как моделируется HTML. Поддержка редактирования в значительной степени использует возможности текстового пакета. - Расширяемость и масштабируемость
- Чтобы максимально повысить полезность этого комплекта, было приложено немало усилий для обеспечения его расширяемости. Вот некоторые из его особенностей.
- Парсер можно заменить. Парсером по умолчанию является парсер Hot Java, основанный на DTD. Можно использовать другую DTD или совершенно другой парсер. Чтобы изменить парсер, повторно реализуйте метод getParser. Парсер по умолчанию загружается динамически при первом обращении к нему, поэтому файлы классов никогда не будут загружены, если используется альтернативный парсер. Парсер по умолчанию находится в отдельном пакете parser, вложенном в этот пакет.
- Парсер управляет ParserCallback, предоставляемым HTMLDocument. Чтобы изменить обратный вызов, создайте подкласс HTMLDocument и повторно реализуйте метод createDefaultDocument, возвращающий документ, который создает другой reader. Reader определяет структуру документа. Хотя Document по умолчанию поддерживает HTML, ничто не мешает поддерживать не-HTML-теги, приводящие к альтернативной структуре элементов.
- Представление моделей по умолчанию обеспечивается иерархией реализаций View, поэтому можно легко настроить отображение конкретного элемента или добавить поддержку новых типов элементов, предоставив новые реализации View. Набор представлений по умолчанию предоставляется классом
HTMLFactory. Его можно легко изменить, создав подкласс HTMLFactory или заменив его и повторно реализовав метод getViewFactory так, чтобы он возвращал альтернативную фабрику. - Реализации 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 |
Копирует пары ключ/значение из AttributeSet объекта element в set. |
void |
deinstall |
Вызывается при удалении набора инструментов из 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 |
Вставляет HTML в существующий документ. |
void |
install |
Вызывается при установке набора инструментов в JEditorPane. |
boolean |
isAutoFormSubmission() |
Указывает, обрабатывается ли отправка HTML-формы автоматически или вызывается только FormSubmitEvent. |
void |
read |
Вставляет содержимое из указанного потока. |
void |
setAutoFormSubmission |
Задает, обрабатывается ли отправка HTML-формы автоматически или вызывается только FormSubmitEvent. |
void |
setDefaultCursor |
Задает курсор по умолчанию. |
void |
setLinkCursor |
Задает курсор, используемый при наведении на ссылки. |
void |
setStyleSheet |
Задает набор стилей для отображения различных элементов HTML. |
void |
write |
Записывает содержимое документа в указанный поток в формате, подходящем для этого типа обработчика содержимого. |
Методы, объявленные в классе StyledEditorKit
getCharacterAttributeRun
Методы, объявленные в классе DefaultEditorKit
createCaret, read, write
Подробное описание полей
DEFAULT_CSS
public static final String DEFAULT_CSS
- См. также:
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()
Подробное описание методов
getContentType
public String getContentType()
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
- Параметры:
-
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)
- Переопределяет:
-
installв классеStyledEditorKit - Параметры:
-
c- JEditorPane
deinstall
public void deinstall(JEditorPane c)
- Переопределяет:
-
deinstallв классеStyledEditorKit - Параметры:
-
c- JEditorPane
setStyleSheet
public void setStyleSheet(StyleSheet s)
- Параметры:
-
s- StyleSheet
getStyleSheet
public StyleSheet getStyleSheet()
- Возвращает:
- StyleSheet
getActions
public Action[] getActions()
- Переопределяет:
-
getActionsв классеStyledEditorKit - Возвращает:
- список команд
createInputAttributes
protected void createInputAttributes(Element element, MutableAttributeSet set)
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()
FormSubmitEvent.- Возвращает:
- true, если отправка HTML-формы обрабатывается автоматически; в противном случае — false.
- Начиная с версии:
- 1.5
- См. также:
setAutoFormSubmission
public void setAutoFormSubmission(boolean isAuto)
FormSubmitEvent. По умолчанию установлено значение true.- Параметры:
-
isAuto- еслиtrue, отправка HTML-формы обрабатывается автоматически. - Начиная с версии:
- 1.5
- См. также:
clone
public Object clone()
- Переопределяет:
-
cloneв классеStyledEditorKit - Возвращает:
- копию
- См. также:
getParser
protected HTMLEditorKit.Parser getParser()
- Возвращает:
- анализатор
getAccessibleContext
public AccessibleContext getAccessibleContext()
- Определен в:
-
getAccessibleContextв интерфейсеAccessible - Возвращает:
- AccessibleContext, связанный с этим комплектом редактора
- Начиная с версии:
- 1.4
© 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