Spec-Zone.ru › OpenJDK 25

Класс 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> задает для body красный фон. Но если HTML-файл также содержит правило CSS body { background: blue }, становится менее понятно, какого цвета должен быть фон body. В текущей реализации визуальным атрибутам, заданным элементом, присваивается наивысший приоритет: они всегда проверяются раньше любых стилей. Поэтому в предыдущем примере фон будет красным, поскольку элемент body задает красный цвет фона.

Как уже упоминалось, поддерживается CSS. Полная спецификация CSS не поддерживается. Список поддерживаемых свойств см. в документации Javadoc класса CSS. Два важных понятия, связанных с разбором CSS, которые в настоящее время не поддерживаются, — это псевдоселекторы, например A:link { color: red }, и модификатор important.

Примечание по реализации:
В настоящее время эта реализация неполна. Ее можно заменить альтернативными реализациями, в которых реализованы все возможности. В будущих версиях этого класса будет обеспечена более полная поддержка CSS.

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

Модификатор и тип Класс Описание
static final class  StyleSheet.BoxPainter
Класс для выполнения некоторых задач форматирования CSS.
static final class  StyleSheet.ListPainter
Класс для выполнения некоторых задач форматирования списков CSS.

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

StyleContext.NamedStyle, StyleContext.SmallAttributeSet

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

Поля, объявленные в классе 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 ss к правилам получателя.
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()
Возвращает массив связанных таблиц стилей.
AttributeSet getViewAttributes(View v)
Получает набор атрибутов для отображения в представлении.
void importStyleSheet(URL 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 ss из таблиц стилей получателя.
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.

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

addChangeListener, addStyle, getChangeListeners, getCompressionThreshold, getDefaultStyleContext, getEmptySet, getFont, getFontMetrics, getStaticAttribute, getStaticAttributeKey, getStyle, getStyleNames, readAttributes, readAttributeSet, reclaim, registerStaticAttributeKey, removeChangeListener, toString, writeAttributes, writeAttributeSet

Методы, объявленные в классе 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''

Атрибуты возвращённого Style будут изменяться при добавлении и удалении правил. То есть, если запросить правило с селектором "table p", а затем добавить новое правило с селектором "p", возвращённый Style будет содержать новые атрибуты из правила "p".

Параметры:
selector — строка с именами элементов, разделёнными пробелами.
Возвращает:
правило, которое лучше всего соответствует селектору.

addRule

public void addRule(String rule)
Добавляет набор правил в таблицу стилей. Правила должны быть заданы в корректном формате CSS. Обычно этот метод вызывается при разборе тега <style>.
Параметры:
rule — набор правил

getDeclaration

public AttributeSet getDeclaration(String decl)
Преобразует объявление CSS в AttributeSet, представляющий это объявление CSS. Обычно этот метод вызывается при обнаружении атрибута style в 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()
Возвращает массив связанных таблиц StyleSheet. Возвращает null, если связанные таблицы StyleSheet отсутствуют.
Возвращает:
массив таблиц StyleSheet.
С версии:
1.3

importStyleSheet

public void importStyleSheet(URL url)
Импортирует таблицу стилей из url. Полученные правила непосредственно добавляются к правилам данного объекта. Если вы не хотите включать правила в данный объект, создайте новую таблицу StyleSheet и свяжите её с помощью addStyleSheet.
Параметры:
url — URL-адрес
С версии:
1.3

setBase

public void setBase(URL base)
Задаёт базовый URL. Все относительные операторы импорта будут интерпретироваться относительно base.
Параметры:
base — базовый URL.
С версии:
1.3

getBase

public URL getBase()
Возвращает базовый URL.
Возвращает:
базовый URL.
С версии:
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, если атрибут HTML value можно преобразовать в атрибут 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(Object, Object)

addAttributes

public AttributeSet addAttributes(AttributeSet old, AttributeSet attr)
Добавляет набор атрибутов к элементу. Если среди этих атрибутов есть атрибуты StyleConstants, они будут преобразованы в CSS перед вызовом поведения суперкласса.
Определено в:
addAttributes в интерфейсе AbstractDocument.AttributeContext
Переопределяет:
addAttributes в классе StyleContext
Параметры:
old — исходный набор атрибутов
attr — добавляемые атрибуты
Возвращает:
обновлённый набор атрибутов
См. также:
  • MutableAttributeSet.addAttribute(Object, Object)

removeAttribute

public AttributeSet removeAttribute(AttributeSet old, Object key)
Удаляет атрибут из набора. Если атрибут является атрибутом StyleConstants, запрос будет преобразован в атрибут CSS перед вызовом поведения суперкласса.
Определено в:
removeAttribute в интерфейсе AbstractDocument.AttributeContext
Переопределяет:
removeAttribute в классе StyleContext
Параметры:
old — исходный набор атрибутов
key — имя атрибута, не равное null
Возвращает:
обновлённый набор атрибутов
См. также:
  • MutableAttributeSet.removeAttribute(Object)

removeAttributes

public AttributeSet removeAttributes(AttributeSet old, Enumeration<?> names)
Удаляет набор атрибутов элемента. Если какой-либо атрибут является атрибутом StyleConstants, запрос будет преобразован в атрибут CSS перед вызовом поведения суперкласса.
Определено в:
removeAttributes в интерфейсе AbstractDocument.AttributeContext
Переопределяет:
removeAttributes в классе StyleContext
Параметры:
old — исходный набор атрибутов
names — имена атрибутов
Возвращает:
обновлённый набор атрибутов
См. также:
  • MutableAttributeSet.removeAttributes(Enumeration)

removeAttributes

public AttributeSet removeAttributes(AttributeSet old, AttributeSet attrs)
Удаляет набор атрибутов. Если какой-либо атрибут является атрибутом StyleConstants, запрос будет преобразован в атрибут CSS перед вызовом поведения суперкласса.
Определено в:
removeAttributes в интерфейсе AbstractDocument.AttributeContext
Переопределяет:
removeAttributes в классе StyleContext
Параметры:
old — исходный набор атрибутов
attrs — атрибуты
Возвращает:
обновлённый набор атрибутов
См. также:
  • MutableAttributeSet.removeAttributes(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. Примечание: этот метод преобразует только строки с цветами HTML 3.2 или строки длиной 7 символов; в противном случае возвращается null.
Параметры:
string — строка с цветом, например "RED" или "#NNNNNN"
Возвращает:
цвет

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по 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/StyleSheet.html

Spec-Zone.ru

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