Класс StyleSheet
- java.lang.Object
-
- javax.swing.text.StyleContext
-
- javax.swing.text.html.StyleSheet
- Все реализуемые интерфейсы:
-
Serializable,AbstractDocument.AttributeContext
public class StyleSheet extends StyleContext
Поддержка определения визуальных характеристик отображаемых представлений HTML. StyleSheet используется для преобразования HTML-модели в визуальные характеристики. Это позволяет настраивать представления с помощью темы, отображать несколько представлений над одной моделью по-разному и т. д. Это можно рассматривать как хранилище правил CSS. Ключом для атрибутов CSS является объект типа CSS.Attribute. Тип значения зависит от реализации StyleSheet, но метод toString должен возвращать строковое представление значения CSS.
Основной входной точкой для реализаций HTML View для получения атрибутов является метод getViewAttributes. Он должен быть реализован для определения желаемой политики, используемой для сопоставления атрибутов с представлением. Каждый HTMLEditorKit (т. е. и, следовательно, каждый связанный JEditorPane) может иметь собственный StyleSheet, но по умолчанию один лист будет совместно использоваться всеми экземплярами HTMLEditorKit. Экземпляр HTMLDocument также может иметь StyleSheet, который содержит специфичные для документа спецификации CSS.
Для того, чтобы представления хранили меньше состояния и, следовательно, были более лёгкими, StyleSheet может действовать как фабрика для художников, которые обрабатывают некоторые задачи отрисовки. Это позволяет реализациям определять, что они хотят кэшировать, и потенциально осуществлять совместное использование на уровне, когда селектор является общим для нескольких представлений. Поскольку StyleSheet может использоваться представлениями над несколькими документами и обычно атрибуты HTML не влияют на используемый селектор, потенциал совместного использования значителен.
Правила хранятся в виде именованных стилей, а другая информация хранится для быстрого перевода контекста элемента в правило. Следующий фрагмент кода отобразит именованные стили, а следовательно, и содержащиеся в них правила CSS.
import java.util.*;
import javax.swing.text.*;
import javax.swing.text.html.*;
public class ShowStyles {
public static void main(String[] args) {
HTMLEditorKit kit = new HTMLEditorKit();
HTMLDocument doc = (HTMLDocument) kit.createDefaultDocument();
StyleSheet styles = doc.getStyleSheet();
Enumeration rules = styles.getStyleNames();
while (rules.hasMoreElements()) {
String name = (String) rules.nextElement();
Style rule = styles.getStyle(name);
System.out.println(rule.toString());
}
System.exit(0);
}
}
Семантика того, когда стиль CSS должен переопределять визуальные атрибуты, определенные элементом, не определена чётко. Например, html <body bgcolor=red> делает фон тела красным. Но если html-файл также содержит правило CSS body { background: blue }, становится менее ясным, какого цвета должен быть фон тела. Текущая реализация присваивает визуальные атрибуты, определенные в элементе, наивысший приоритет, то есть они всегда проверяются перед любыми стилями. Таким образом, в предыдущем примере фон будет красного цвета, так как элемент тела определяет цвет фона как красный.
Как уже упоминалось, это поддерживает CSS. Мы не поддерживаем полную спецификацию CSS. Обратитесь к документации класса CSS, чтобы узнать, какие свойства мы поддерживаем. Два основных концепции, связанных с разбором CSS, которые мы в настоящее время не поддерживаем, это псевдоселекторы, такие как A:link { color: red }, и модификатор important.
- Примечание о реализации:
- Эта реализация в настоящее время неполна. Она может быть заменена альтернативными реализациями, которые являются полными. Будущие версии этого класса обеспечат лучшую поддержку CSS.
- См. также:
- Сериализованная форма
Вложенные классы
| Модификатор и тип | Класс | Описание |
|---|---|---|
static class | StyleSheet.BoxPainter | Класс для выполнения некоторых задач форматирования CSS. |
static class | StyleSheet.ListPainter | Класс для выполнения некоторых задач форматирования списков CSS. |
Вложенные классы/интерфейсы, объявленные в классе javax.swing.text.StyleContext
StyleContext.NamedStyle, StyleContext.SmallAttributeSet Поля
Поля, объявленные в классе javax.swing.text.StyleContext
DEFAULT_STYLE Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
StyleSheet() | Создать StyleSheet |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
AttributeSet | addAttribute(AttributeSet old,
Object key,
Object value) | Добавляет атрибут в заданный набор и возвращает новый представительный набор. |
AttributeSet | addAttributes(AttributeSet old,
AttributeSet attr) | Добавляет набор атрибутов к элементу. |
void | addCSSAttribute(MutableAttributeSet attr,
CSS.Attribute key,
String value) | Добавляет атрибут CSS в заданный набор. |
boolean | addCSSAttributeFromHTML(MutableAttributeSet attr,
CSS.Attribute key,
String value) | Добавляет атрибут CSS в заданный набор. |
void | addRule(String rule) | Добавляет набор правил в лист. |
void | addStyleSheet(StyleSheet ss) | Добавляет правила из StyleSheet |
protected MutableAttributeSet | createLargeAttributeSet(AttributeSet a) | Создает большой набор атрибутов, который должен обеспечить баланс между объёмом и временем. |
protected StyleContext.SmallAttributeSet | createSmallAttributeSet(AttributeSet a) | Создает компактный набор атрибутов, который может быть общим. |
Color | getBackground(AttributeSet a) | Принимает набор атрибутов и преобразует его в спецификацию цвета фона. |
URL | getBase() | Возвращает базовый элемент. |
StyleSheet.BoxPainter | getBoxPainter(AttributeSet a) | Возвращает форматировщик блоков для использования с заданным набором атрибутов CSS. |
AttributeSet | getDeclaration(String decl) | Преобразует объявление CSS в AttributeSet, представляющий объявление CSS. |
Font | getFont(AttributeSet a) | Возвращает шрифт для использования с заданным набором атрибутов. |
Color | getForeground(AttributeSet a) | Принимает набор атрибутов и преобразует его в спецификацию цвета переднего плана. |
static int | getIndexOfSize(float pt) | Возвращает индекс модели размера HTML/CSS. |
StyleSheet.ListPainter | getListPainter(AttributeSet a) | Возвращает форматировщик списков для использования с заданным набором атрибутов CSS. |
float | getPointSize(int index) | Возвращает размер шрифта, заданный индексом размера. |
float | getPointSize(String size) | Принимая строку, такую как "+2", "-2" или "2", возвращает значение размера шрифта в пунктах. |
Style | getRule(String selector) | Возвращает правило, наиболее соответствующее селектору, заданному в строковом виде. |
Style | getRule(HTML.Tag t,
Element e) | Возвращает стиль, используемый для отображения заданного типа HTML-тега. |
StyleSheet[] | getStyleSheets() | Возвращает массив связанных StyleSheet. |
AttributeSet | getViewAttributes(View v) | Возвращает набор атрибутов, используемых в представлении для отображения. |
void | importStyleSheet(URL url) | Импортирует стиль из |
void | loadRules(Reader in,
URL ref) | Загружает набор правил, указанных в грамматике CSS1. |
AttributeSet | removeAttribute(AttributeSet old,
Object key) | Удаляет атрибут из набора. |
AttributeSet | removeAttributes(AttributeSet old,
Enumeration<?> names) | Удаляет набор атрибутов для элемента. |
AttributeSet | removeAttributes(AttributeSet old,
AttributeSet attrs) | Удаляет набор атрибутов. |
void | removeStyle(String nm) | Удаляет именованный стиль, ранее добавленный в документ. |
void | removeStyleSheet(StyleSheet ss) | Удаляет StyleSheet |
void | setBase(URL base) | Устанавливает базовый элемент. |
void | setBaseFontSize(int sz) | Устанавливает базовый размер шрифта, допустимые значения находятся в диапазоне от 1 до 7. |
void | setBaseFontSize(String size) | Устанавливает базовый размер шрифта из переданной строки. |
Color | stringToColor(String string) | Преобразует строку цвета, такую как "RED" или "#NNNNNN", в объект Color. |
AttributeSet | translateHTMLToCSS(AttributeSet htmlAttrSet) | Преобразует набор атрибутов HTML в эквивалентный набор атрибутов CSS. |
Методы, объявленные в классе javax.swing.text.StyleContext
addChangeListener, addStyle, getChangeListeners, getCompressionThreshold, getDefaultStyleContext, getEmptySet, getFont, getFontMetrics, getStaticAttribute, getStaticAttributeKey, getStyle, getStyleNames, readAttributes, readAttributeSet, reclaim, registerStaticAttributeKey, removeChangeListener, toString, writeAttributes, writeAttributeSet Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait Подробное описание конструкторов
StyleSheet
public StyleSheet()
Создать StyleSheet
Методы
getRule
public Style getRule(HTML.Tag t,
Element e) Извлекает стиль, используемый для отображения указанного типа тега HTML. Передаваемый элемент представляет тег и может использоваться для определения вложенности в ситуациях, когда атрибуты будут отличаться при вложенности внутри элементов.
- Параметры:
-
t- тип для перевода во визуальные атрибуты -
e- элемент, представляющий тег; элемент может быть использован для определения вложенности в ситуациях, когда атрибуты будут отличаться при вложенности внутри других элементов - Возвращает:
- набор атрибутов CSS, используемых для отображения тега
getRule
public Style getRule(String selector)
Извлекает правило, наиболее соответствующее селектору, заданному в строковом формате. Где selector — это разделенная пробелами строка имён элементов. Например, selector может быть 'html body tr td'.
Атрибуты возвращаемого стиля будут изменяться по мере добавления и удаления правил. То есть, если вы запросите правило с селектором "table p", а затем будет добавлено новое правило с селектором "p", возвращаемый стиль будет включать новые атрибуты из правила "p".
- Параметры:
-
selector- разделенная пробелами строка имён элементов. - Возвращает:
- правило, которое лучше всего соответствует селектору.
addRule
public void addRule(String rule)
Добавляет набор правил в лист стилей. Правила должны быть в корректном формате CSS. Обычно это вызывается в результате парсинга тега <style>.
- Параметры:
-
rule- набор правил
getDeclaration
public AttributeSet getDeclaration(String decl)
Преобразует объявление CSS в AttributeSet, представляющий это объявление. Обычно это вызывается в результате столкновения с атрибутом стиля HTML.
- Параметры:
-
decl- объявление CSS - Возвращает:
- набор атрибутов, представляющий объявление CSS.
loadRules
public void loadRules(Reader in,
URL ref)
throws IOException Загружает набор правил, заданных в грамматике CSS1. При возникновении коллизий с существующими правилами, новое правило будет приоритетным.
- Параметры:
-
in- поток для чтения грамматики CSS -
ref- URL-ссылка. Это значение представляет местоположение потока и может быть null. Все относительные URL, указанные в потоке, будут основываться на этом параметре. - Исключения:
-
IOException- если произошла ошибка ввода-вывода.
getViewAttributes
public AttributeSet getViewAttributes(View v)
Извлекает набор атрибутов, используемых в представлении для отображения. Это, по сути, набор атрибутов, которые могут быть использованы для View.getAttributes.
- Параметры:
-
v- представление - Возвращает:
- набор атрибутов
removeStyle
public void removeStyle(String nm)
Удаляет стиль с заданным именем, ранее добавленный в документ.
- Переопределяет:
-
removeStyleв классеStyleContext - Параметры:
-
nm- имя стиля для удаления
addStyleSheet
public void addStyleSheet(StyleSheet ss)
Добавляет правила из StyleSheet ss к правилам получателя. ss's правила будут переопределять правила любых ранее добавленных листов стилей. Добавляемый StyleSheet никогда не переопределит правила получателя.
- Параметры:
-
ss- StyleSheet - С:
- 1.3
removeStyleSheet
public void removeStyleSheet(StyleSheet ss)
Удаляет StyleSheet ss из правил получателя.
- Параметры:
-
ss- StyleSheet - С:
- 1.3
getStyleSheets
public StyleSheet[] getStyleSheets()
Возвращает массив связанных StyleSheets. Возвращает null, если связанных StyleSheets нет.
- Возвращает:
- массив StyleSheets.
- С:
- 1.3
importStyleSheet
public void importStyleSheet(URL url)
Импортирует лист стилей из url. Результирующие правила напрямую добавляются к получателю. Если вы не хотите, чтобы правила стали частью получателя, создайте новый StyleSheet и используйте addStyleSheet для его связывания.
- Параметры:
-
url- url - С:
- 1.3
setBase
public void setBase(URL base)
Устанавливает базовый адрес. Все импорты, которые являются относительными, будут относительны к base.
- Параметры:
-
base- базовый адрес. - С:
- 1.3
getBase
public URL getBase()
Возвращает базовый адрес.
- Возвращает:
- базовый адрес.
- С:
- 1.3
addCSSAttribute
public void addCSSAttribute(MutableAttributeSet attr,
CSS.Attribute key,
String value) Добавляет атрибут CSS к заданному набору.
- Параметры:
-
attr- набор атрибутов -
key- свойство CSS -
value- значение атрибута HTML - С:
- 1.3
addCSSAttributeFromHTML
public boolean addCSSAttributeFromHTML(MutableAttributeSet attr,
CSS.Attribute key,
String value) Добавляет атрибут CSS к заданному набору.
- Параметры:
-
attr- набор атрибутов -
key- свойство CSS -
value- значение атрибута HTML - Возвращает:
-
trueесли атрибут HTMLvalueможет быть преобразован в атрибут CSS, иначе false. - С:
- 1.3
translateHTMLToCSS
public AttributeSet translateHTMLToCSS(AttributeSet htmlAttrSet)
Преобразует набор атрибутов HTML в эквивалентный набор атрибутов CSS.
- Параметры:
-
htmlAttrSet- AttributeSet, содержащий атрибуты HTML. - Возвращает:
- набор атрибутов CSS.
addAttribute
public AttributeSet addAttribute(AttributeSet old,
Object key,
Object value) Добавляет атрибут к заданному набору и возвращает новый представительный набор. Это переопределено для преобразования атрибутов StyleConstant в CSS перед пересылкой в поведение суперкласса. Атрибут StyleConstants не имеет соответствующей записи CSS, атрибут StyleConstants хранится (но, вероятно, не будет использован).
- Определено в:
-
addAttributeв интерфейсеAbstractDocument.AttributeContext - Переопределяет:
-
addAttributeв классеStyleContext - Параметры:
-
old- старый набор атрибутов -
key- ключ атрибута (не null) -
value- значение атрибута - Возвращает:
- обновлённый набор атрибутов
- См. также:
MutableAttributeSet.addAttribute(java.lang.Object, java.lang.Object)
addAttributes
public AttributeSet addAttributes(AttributeSet old,
AttributeSet attr) Добавляет набор атрибутов к элементу. Если какие-либо из этих атрибутов являются атрибутами StyleConstants, они будут преобразованы в CSS перед пересылкой в поведение суперкласса.
- Определено в:
-
addAttributesв интерфейсеAbstractDocument.AttributeContext - Переопределяет:
-
addAttributesв классеStyleContext - Параметры:
-
old- старый набор атрибутов -
attr- атрибуты для добавления - Возвращает:
- обновлённый набор атрибутов
- См. также:
MutableAttributeSet.addAttribute(java.lang.Object, java.lang.Object)
removeAttribute
public AttributeSet removeAttribute(AttributeSet old,
Object key) Удаляет атрибут из набора. Если атрибут является атрибутом StyleConstants, запрос будет преобразован в атрибут CSS перед пересылкой в поведение суперкласса.
- Определено в:
-
removeAttributeв интерфейсеAbstractDocument.AttributeContext - Переопределяет:
-
removeAttributeв классеStyleContext - Параметры:
-
old- старый набор атрибутов -
key- имя атрибута (не null) - Возвращает:
- обновлённый набор атрибутов
- См. также:
MutableAttributeSet.removeAttribute(java.lang.Object)
removeAttributes
public AttributeSet removeAttributes(AttributeSet old,
Enumeration<?> names) Удаляет набор атрибутов для элемента. Если какой-либо из атрибутов является атрибутом StyleConstants, запрос будет преобразован в атрибут CSS перед пересылкой в поведение суперкласса.
- Определено в:
-
removeAttributesв интерфейсеAbstractDocument.AttributeContext - Переопределяет:
-
removeAttributesв классеStyleContext - Параметры:
-
old- старый набор атрибутов -
names- имена атрибутов - Возвращает:
- обновлённый набор атрибутов
- См. также:
MutableAttributeSet.removeAttributes(java.util.Enumeration<?>)
removeAttributes
public AttributeSet removeAttributes(AttributeSet old,
AttributeSet attrs) Удаляет набор атрибутов. Если какой-либо из атрибутов является атрибутом StyleConstants, запрос будет преобразован в атрибут CSS перед пересылкой в поведение суперкласса.
- Определено в:
-
removeAttributesв интерфейсеAbstractDocument.AttributeContext - Переопределяет:
-
removeAttributesв классеStyleContext - Параметры:
-
old- старый набор атрибутов -
attrs- атрибуты - Возвращает:
- обновлённый набор атрибутов
- См. также:
MutableAttributeSet.removeAttributes(java.util.Enumeration<?>)
createSmallAttributeSet
protected StyleContext.SmallAttributeSet createSmallAttributeSet(AttributeSet a)
Создаёт компактный набор атрибутов, который может быть общим. Это точка входа для подклассов, которые хотят изменить поведение SmallAttributeSet. Это можно переопределить, чтобы вернуть AttributeSet, который предоставляет некоторое преобразование атрибутов.
- Переопределяет:
-
createSmallAttributeSetв классеStyleContext - Параметры:
-
a- Набор атрибутов, которые должны быть представлены в компактном формате. - Возвращает:
- компактный набор атрибутов, которые могут быть общими
createLargeAttributeSet
protected MutableAttributeSet createLargeAttributeSet(AttributeSet a)
Создаёт большой набор атрибутов, который должен жертвовать пространством во имя скорости. Этот набор не будет общим. Это «крючок» для подклассов, которые хотят изменить поведение формата хранения больших атрибутов (по умолчанию — SimpleAttributeSet). Это можно переопределить, чтобы вернуть MutableAttributeSet, который предоставляет некий вид преобразования атрибутов.
- Переопределяет:
-
createLargeAttributeSetв классеStyleContext - Параметры:
-
a- Набор атрибутов, которые должны быть представлены в более объёмном формате. - Возвращает:
- большой набор атрибутов, который должен жертвовать пространством во имя скорости
getFont
public Font getFont(AttributeSet a)
Возвращает шрифт, который должен использоваться для данного набора атрибутов.
- Переопределяет:
-
getFontв классеStyleContext - Параметры:
-
a- набор атрибутов - Возвращает:
- шрифт
getForeground
public Color getForeground(AttributeSet a)
Принимает набор атрибутов и преобразует его в спецификацию цвета переднего плана. Это может использоваться для указания таких вещей, как более яркий цвет или смещение оттенка.
- Переопределяет:
-
getForegroundв классеStyleContext - Параметры:
-
a- набор атрибутов - Возвращает:
- цвет
getBackground
public Color getBackground(AttributeSet a)
Принимает набор атрибутов и преобразует его в спецификацию цвета заднего плана. Это может использоваться для указания таких вещей, как более яркий цвет или смещение оттенка.
- Переопределяет:
-
getBackgroundв классеStyleContext - Параметры:
-
a- набор атрибутов - Возвращает:
- цвет
getBoxPainter
public StyleSheet.BoxPainter getBoxPainter(AttributeSet a)
Возвращает форматировщик прямоугольника, который должен использоваться для данного набора CSS атрибутов.
- Параметры:
-
a- набор CSS атрибутов - Возвращает:
- форматировщик прямоугольника.
getListPainter
public StyleSheet.ListPainter getListPainter(AttributeSet a)
Возвращает форматировщик списка, который должен использоваться для данного набора CSS атрибутов.
- Параметры:
-
a- набор CSS атрибутов - Возвращает:
- форматировщик списка.
setBaseFontSize
public void setBaseFontSize(int sz)
Устанавливает размер базового шрифта, значения которого должны быть от 1 до 7.
- Параметры:
-
sz- размер шрифта.
setBaseFontSize
public void setBaseFontSize(String size)
Устанавливает размер базового шрифта из переданной строки. Строка может указывать конкретный размер шрифта (от 1 до 7) или относительный размер шрифта, например +1 или -2.
- Параметры:
-
size- размер шрифта.
getIndexOfSize
public static int getIndexOfSize(float pt)
Возвращает индекс модели размера HTML/CSS.
- Параметры:
-
pt- размер в пунктах - Возвращает:
- индекс модели размера HTML/CSS.
getPointSize
public float getPointSize(int index)
Возвращает размер в пунктах, заданный по индексу размера.
- Параметры:
-
index- индекс размера - Возвращает:
- значение размера в пунктах.
getPointSize
public float getPointSize(String size)
Принимая на вход строку, такую как "+2", "-2" или "2", возвращает значение размера в пунктах.
- Параметры:
-
size- строка CSS, описывающая размер шрифта - Возвращает:
- значение размера в пунктах.
stringToColor
public Color stringToColor(String string)
Преобразует строку цвета, такую как "RED" или "#NNNNNN", в объект Color. Примечание: Это преобразование будет выполнено только для строк HTML3.2 цветов или строк длиной 7 символов; в противном случае будет возвращено null.
- Параметры:
-
string- строка цвета, такая как "RED" или "#NNNNNN" - Возвращает:
- цвет
© 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/text/html/StyleSheet.html