Класс 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. Поддержка редактирования в значительной степени опирается на пакет text. - Расширяемость/Масштабируемость
- Для максимальной полезности этого набора инструментов была приложена значительная работа, чтобы сделать его расширяемым. Вот некоторые из его особенностей.
- Парсер заменяем. По умолчанию используется парсер Hot Java, который основан на DTD. Можно использовать другой DTD или совершенно другой парсер. Для изменения парсера переопределите метод getParser. Парсер по умолчанию динамически загружается при первом запросе, поэтому файлы класса никогда не будут загружены, если используется альтернативный парсер. Парсер по умолчанию находится в отдельном пакете под названием parser ниже этого пакета.
- Парсер управляет ParserCallback, который предоставляется HTMLDocument. Для изменения обратного вызова необходимо создать подкласс HTMLDocument и переопределить метод createDefaultDocument для возврата документа, который создаёт другой reader. Reader контролирует структуру документа. Хотя Document по умолчанию поддерживает HTML, ничего не мешает поддержке тегов, не являющихся HTML, которые приводят к альтернативным структурам элементов.
- Представления моделей по умолчанию предоставляются в виде иерархии реализаций View, поэтому можно легко настроить отображение конкретного элемента или добавить возможности для новых типов элементов, предоставив новые реализации View. Набор представлений по умолчанию предоставляется классом
HTMLFactory. Это можно легко изменить, создав подкласс или заменив HTMLFactory и переопределив метод getViewFactory для возврата альтернативной фабрики. - Реализации View работают в основном с атрибутами CSS, которые хранятся в представлениях. Это позволяет отображать несколько представлений над той же моделью, которые выглядят существенно по-разному. Это особенно полезно для печати. Для большинства атрибутов HTML атрибуты HTML преобразуются в атрибуты CSS для отображения. Это помогает сделать реализации View более универсальными.
- Асинхронная загрузка
- Большие документы подразумевают много парсинга и требуют некоторого времени для загрузки. По умолчанию этот набор инструментов создаёт документы, которые будут загружаться асинхронно, если загружены с помощью
JEditorPane.setPage. Это контролируется свойством документа. МетодcreateDefaultDocumentможно переопределить для изменения этого. Объединение работы выполняется классомHTMLDocument.HTMLReader. Фактическая работа выполняется классамиDefaultStyledDocumentиAbstractDocumentв пакете text. - Настройка с текущей LAF
- HTML предоставляет хорошо известный набор функций без точного указания характеристик отображения. Swing имеет механизм темы для своих реализаций внешнего вида и ощущения. Желательно, чтобы внешний вид и ощущения передавали характеристики отображения в 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 Результат парсинга управляет этими методами обратного вызова. |
Вложенные классы/интерфейсы, унаследованные от класса javax.swing.text.StyledEditorKit
StyledEditorKit.AlignmentAction, StyledEditorKit.BoldAction, StyledEditorKit.FontFamilyAction, StyledEditorKit.FontSizeAction, StyledEditorKit.ForegroundAction, StyledEditorKit.ItalicAction, StyledEditorKit.StyledTextAction, StyledEditorKit.UnderlineAction Вложенные классы/интерфейсы, унаследованные от класса javax.swing.text.DefaultEditorKit
DefaultEditorKit.BeepAction, DefaultEditorKit.CopyAction, DefaultEditorKit.CutAction, DefaultEditorKit.DefaultKeyTypedAction, DefaultEditorKit.InsertBreakAction, DefaultEditorKit.InsertContentAction, DefaultEditorKit.InsertTabAction, DefaultEditorKit.PasteAction Поля
| Модификатор и тип | Поле и описание |
|---|---|
static String |
BOLD_ACTION Идентификатор действия полужирным шрифтом |
static String |
COLOR_ACTION Идентификатор действия выбора цвета. Цвет передаётся в качестве аргумента |
static String |
DEFAULT_CSS Файл стилей по умолчанию, настраивающий представления тегов. |
static String |
FONT_CHANGE_BIGGER Идентификатор действия увеличения размера шрифта до следующего значения |
static String |
FONT_CHANGE_SMALLER Идентификатор действия уменьшения размера шрифта до следующего значения |
static String |
IMG_ALIGN_BOTTOM Выравнивание изображений по нижнему краю. |
static String |
IMG_ALIGN_MIDDLE Выравнивание изображений по центру. |
static String |
IMG_ALIGN_TOP Выравнивание изображений по верхнему краю. |
static String |
IMG_BORDER Выравнивание изображений по границе. |
static String |
ITALIC_ACTION Идентификатор действия курсивом |
static String |
LOGICAL_STYLE_ACTION Идентификатор действия выбора логического стиля. Логический стиль передаётся в качестве аргумента |
static String |
PARA_INDENT_LEFT Идентификатор действия отступа слева абзаца |
static String |
PARA_INDENT_RIGHT Идентификатор действия отступа справа абзаца |
Поля, унаследованные от класса javax.swing.text.DefaultEditorKit
backwardAction, beepAction, beginAction, beginLineAction, beginParagraphAction, beginWordAction, copyAction, cutAction, defaultKeyTypedAction, deleteNextCharAction, deleteNextWordAction, deletePrevCharAction, deletePrevWordAction, downAction, endAction, endLineAction, 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) Копирует ключи/значения в наборе атрибутов |
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-формы автоматически или вызывается только |
void |
read(Reader in,
Document doc,
int pos) Вставляет содержимое из заданного потока. |
void |
setAutoFormSubmission(boolean isAuto) Указывает, обрабатывается ли отправка HTML-формы автоматически или вызывается только |
void |
setDefaultCursor(Cursor cursor) Устанавливает стандартный курсор. |
void |
setLinkCursor(Cursor cursor) Устанавливает курсор, используемый над ссылками. |
void |
setStyleSheet(StyleSheet s) Устанавливает набор стилей, используемых для рендеринга различных HTML-элементов. |
void |
write(Writer out,
Document doc,
int pos,
int len) Записывает содержимое документа в заданный поток в формате, соответствующем этому обработчику содержимого. |
Методы, унаследованные от класса javax.swing.text.StyledEditorKit
getCharacterAttributeRun Методы, унаследованные от класса javax.swing.text.DefaultEditorKit
createCaret, read, write Методы, унаследованные от класса java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Поля
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()
Создаёт 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 -
popDepth- количество ElementSpec.EndTagTypes для генерации перед вставкой -
pushDepth- количество ElementSpec.StartTagTypes с направлением ElementSpec.JoinNextDirection, которое должно быть сгенерировано перед вставкой, но после генерации закрывающих тегов -
insertTag- первый тег для начала вставки в документ - Исключения:
-
RuntimeException- (в конечном итоге BadLocationException) если pos недопустим BadLocationExceptionIOException
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. Это следует переопределить, чтобы обеспечить более мелкую гранулярность, если необходимо.
getStyleSheet
public StyleSheet getStyleSheet()
Получает набор стилей, в настоящее время используемых для отображения элементов HTML. По умолчанию загружается ресурс, указанный в DEFAULT_CSS, и он используется всеми экземплярами HTMLEditorKit.
getActions
public Action[] getActions()
Возвращает список команд для редактора. Это список команд, поддерживаемых суперклассом, дополненный набором команд, определённых локально для операций со стилями.
- Переопределяет:
-
getActionsв классеStyledEditorKit - Возвращает:
- список команд
createInputAttributes
protected void createInputAttributes(Element element,
MutableAttributeSet set) Копирует пары ключ/значение из набора атрибутов AttributeSet в element в set. Атрибуты компонента, иконки и имени элемента не копируются. Подклассы могут захотеть уточнить, что копируется, а что нет. Но сначала убедитесь, что все атрибуты, которые находятся в set, удалены.
Вызывается всякий раз, когда курсор перемещается на другое место.
- Переопределяет:
-
createInputAttributesв классеStyledEditorKit
getInputAttributes
public MutableAttributeSet getInputAttributes()
Возвращает набор входных атрибутов, используемых для действий по стилизованному редактированию.
- Переопределяет:
-
getInputAttributesв классеStyledEditorKit - Возвращает:
- набор атрибутов
setDefaultCursor
public void setDefaultCursor(Cursor cursor)
Устанавливает курсор по умолчанию.
- С:
- 1.3
getDefaultCursor
public Cursor getDefaultCursor()
Возвращает курсор по умолчанию.
- С:
- 1.3
setLinkCursor
public void setLinkCursor(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.
- С момента:
- 1.5
- См. также:
-
isAutoFormSubmission(),FormSubmitEvent
clone
public Object clone()
Создаёт копию набора редактирования.
- Переопределяет:
-
cloneв классеStyledEditorKit - Возвращает:
- копию
- См. также:
Cloneable
getParser
protected HTMLEditorKit.Parser getParser()
Получить парсер для чтения потоков HTML. Это можно переопределить, чтобы использовать другой парсер. По умолчанию реализация загружается динамически, чтобы избежать накладных расходов при загрузке по умолчанию, если он не используется. По умолчанию парсер - HotJava парсер, использующий HTML 3.2 DTD.
getAccessibleContext
public AccessibleContext getAccessibleContext()
Возвращает AccessibleContext, связанный с этим набором редактирования
- Определено в:
-
getAccessibleContextв интерфейсеAccessible - Возвращает:
- AccessibleContext, связанный с этим набором редактирования
- С момента:
- 1.4
© 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.