Класс 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-представлений для получения своих атрибутов является метод 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 } , становится менее очевидно, каким цветом должен быть фон тела. Текущая реализация присваивает визуальным атрибутам, определенным в элементе, наивысший приоритет, то есть они всегда проверяются перед любыми стилями. Таким образом, в предыдущем примере фон будет иметь красный цвет, так как элемент body определяет цвет фона как красный.
Как уже упоминалось, это поддерживает 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) |
StyleSheet.ListPainter |
getListPainter(AttributeSet a) Получает форматировщик списков для использования с заданным набором атрибутов CSS. |
float |
getPointSize(int index) Возвращает размер шрифта, заданный индексом размера. |
float |
getPointSize(String size) Принимает строку, такую как "+2", "-2" или "2", и возвращает значение размера шрифта в пунктах. |
Style |
getRule(HTML.Tag t,
Element e) Получает стиль для рендеринга заданного типа HTML-тега. |
Style |
getRule(String selector) Получает правило, которое лучше всего соответствует селектору, заданному в строковой форме. |
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,
AttributeSet attrs) Удаляет набор атрибутов. |
AttributeSet |
removeAttributes(AttributeSet old,
Enumeration<?> names) Удаляет набор атрибутов для элемента. |
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", в цвет. |
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".
addRule
public void addRule(String rule)
Добавляет набор правил в лист. Правила должны быть в формате CSS. Обычно это вызывается в результате парсинга тега <style>.
getDeclaration
public AttributeSet getDeclaration(String decl)
Преобразует объявление CSS в AttributeSet, представляющий объявление CSS. Обычно это вызывается в результате столкновения с атрибутом стиля HTML.
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.
removeStyle
public void removeStyle(String nm)
Удаляет именованный стиль, ранее добавленный в документ.
- Переопределяет:
-
removeStyleв классеStyleContext - Параметры:
-
nm- имя стиля для удаления
addStyleSheet
public void addStyleSheet(StyleSheet ss)
Добавляет правила из StyleSheet ss к правилам получателя. ss's правила будут переопределять правила любых ранее добавленных таблиц стилей. Добавляемый StyleSheet никогда не будет переопределять правила принимающего StyleSheet.
- С:
- 1.3
removeStyleSheet
public void removeStyleSheet(StyleSheet ss)
Удаляет StyleSheet ss из таблицы стилей получателя.
- С:
- 1.3
getStyleSheets
public StyleSheet[] getStyleSheets()
Возвращает массив связанных StyleSheets. Вернет null, если связанных StyleSheets нет.
- С:
- 1.3
importStyleSheet
public void importStyleSheet(URL url)
Импортирует таблицу стилей из url. Результирующие правила напрямую добавляются к получателю. Если вы не хотите, чтобы правила стали частью получателя, создайте новый StyleSheet и используйте addStyleSheet для его связи.
- С:
- 1.3
setBase
public void setBase(URL base)
Устанавливает базовый URL. Все импорты, которые относительные, будут относиться к base.
- С:
- 1.3
getBase
public URL getBase()
Возвращает базовый URL.
- С:
- 1.3
addCSSAttribute
public void addCSSAttribute(MutableAttributeSet attr,
CSS.Attribute key,
String value) Добавляет атрибут CSS в заданный набор.
- С:
- 1.3
addCSSAttributeFromHTML
public boolean addCSSAttributeFromHTML(MutableAttributeSet attr,
CSS.Attribute key,
String value) Добавляет атрибут CSS в заданный набор.
- С:
- 1.3
translateHTMLToCSS
public AttributeSet translateHTMLToCSS(AttributeSet htmlAttrSet)
Преобразует набор атрибутов HTML в эквивалентный набор атрибутов CSS.
- Параметры:
-
htmlAttrSet- AttributeSet, содержащий атрибуты HTML.
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.
getListPainter
public StyleSheet.ListPainter getListPainter(AttributeSet a)
Возвращает объект-форматер для рисования маркированных списков на основе заданного набора атрибутов CSS.
setBaseFontSize
public void setBaseFontSize(int sz)
Устанавливает базовый размер шрифта, допустимые значения от 1 до 7.
setBaseFontSize
public void setBaseFontSize(String size)
Устанавливает базовый размер шрифта из переданной строки. Строка может обозначать конкретный размер шрифта (допустимые значения от 1 до 7), или относительный размер шрифта, например, +1 или -2.
getIndexOfSize
public static int getIndexOfSize(float pt)
getPointSize
public float getPointSize(int index)
Возвращает размер шрифта, заданного индексом.
getPointSize
public float getPointSize(String size)
Для строки типа "+2", "-2" или "2" возвращает значение размера шрифта.
stringToColor
public Color stringToColor(String string)
Преобразует строку цвета, например, "RED" или "#NNNNNN", в объект Color. Примечание: Преобразует только строки HTML3.2 или строки длиной 7 символов; в противном случае возвращает null.
© 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.