模块  java.desktop
软件包  javax.swing.text.html

Class StyleSheet

  • 实现的所有接口
    SerializableAbstractDocument.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 } ,那么身体背景应该是什么颜色就不那么清楚了。 当前实现为元素中定义的可视属性提供了最高优先级,即在任何样式之前始终检查它们。 因此,在前面的示例中,背景将具有红色,因为body元素将背景颜色定义为红色。

    如前所述,这支持CSS。 我们不支持完整的CSS规范。 请参阅CSS类的javadoc以查看我们支持的属性。 我们目前不支持的两个主要的CSS解析相关概念是伪选择器,例如A:link { color: red }important修饰符。

    Implementation Note:
    此实施目前尚未完成。 它可以替换为完整的替代实现。 该类的未来版本将提供更好的CSS支持。
    另请参见:
    Serialized Form
    • 构造方法详细信息

      • 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”选择器的新规则,则返回的Style将包含规则“p”中的新属性。

        参数
        selector - 空格分隔的元素名称字符串。
        结果
        最符合选择器的规则。
      • addRule

        public void addRule​(String rule)
        向工作表添加一组规则。 预计规则将采用有效的CSS格式。 通常,这将通过解析<style>标记来调用。
        参数
        rule - 一套规则
      • getDeclaration

        public AttributeSet getDeclaration​(String decl)
        将CSS声明转换为表示CSS声明的AttributeSet。 通常,这会因遇到HTML样式属性而被调用。
        参数
        decl - CSS声明
        结果
        一组表示CSS声明的属性。
      • loadRules

        public void loadRules​(Reader in,
                              URL ref)
                       throws IOException
        加载一组已根据CSS1语法指定的规则。 如果与现有规则发生冲突,则新指定的规则将获胜。
        参数
        in - 从中读取CSS语法的流
        ref - 参考URL。 此值表示流的位置,可以为null。 流中指定的所有相对URL都将基于此参数。
        异常
        IOException - 如果发生I / O错误。
      • 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 - 样式表
        从以下版本开始:
        1.3
      • removeStyleSheet

        public void removeStyleSheet​(StyleSheet ss)
        从接收器中删除StyleSheet ss
        参数
        ss - 样式表
        从以下版本开始:
        1.3
      • getStyleSheets

        public StyleSheet[] getStyleSheets()
        返回链接的StyleSheets的数组。 如果没有链接的StyleSheets,则返回null。
        结果
        StyleSheets数组。
        从以下版本开始:
        1.3
      • importStyleSheet

        public void importStyleSheet​(URL url)
        url导入样式表。 生成的规则直接添加到接收器。 如果您不希望规则成为接收器的一部分,请创建一个新的StyleSheet并使用addStyleSheet将其链接到。
        参数
        url - 网址
        从以下版本开始:
        1.3
      • setBase

        public void setBase​(URL base)
        设置基数。 所有相对的import语句都是相对于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如果HTML属性 value可以转换为CSS属性,否则为false。
        从以下版本开始:
        1.3
      • translateHTMLToCSS

        public AttributeSet translateHTMLToCSS​(AttributeSet htmlAttrSet)
        将一组HTML属性转换为一组等效的CSS属性。
        参数
        htmlAttrSet - 包含HTML属性的AttributeSet。
        结果
        CSS属性集。
      • createSmallAttributeSet

        protected StyleContext.SmallAttributeSet createSmallAttributeSet​(AttributeSet a)
        创建可以共享的紧凑属性集。 这是一个想要改变SmallAttributeSet行为的子类的钩子。 这可以重新实现以返回提供某种属性转换的AttributeSet。
        重写:
        createSmallAttributeSet在类 StyleContext
        参数
        a - 要在紧凑形式中表示的属性集。
        结果
        一组可以共享的紧凑属性
      • createLargeAttributeSet

        protected MutableAttributeSet createLargeAttributeSet​(AttributeSet a)
        创建一大堆属性,这些属性应该在空间上进行权衡。 此套装不会被分享。 这是一个子类的挂钩,它想要改变较大属性存储格式(默认情况下为SimpleAttributeSet)的行为。 这可以重新实现以返回提供某种属性转换的MutableAttributeSet。
        重写:
        createLargeAttributeSet在类 StyleContext
        参数
        a - 要以更大的形式表示的属性集。
        结果
        一大堆属性应该随着时间的推移进行权衡
      • getForeground

        public Color getForeground​(AttributeSet a)
        获取一组属性并将其转换为前景色规范。 这可能用于指定更明亮,更多色调等内容。
        重写:
        getForeground在类 StyleContext
        参数
        a - 属性集
        结果
        颜色
      • getBackground

        public Color getBackground​(AttributeSet a)
        获取一组属性并将其转换为背景颜色规范。 这可能用于指定更明亮,更多色调等内容。
        重写:
        getBackgroundStyleContext
        参数
        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)
        从传入的String中设置基本字体大小。 字符串可以标识特定的字体大小,合法值在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”)转换为颜色。 注意:这只会转换HTML3.2颜色字符串或长度为7的字符串; 否则,它将返回null。
        参数
        string - 颜色字符串,例如“RED”或“#NNNNNN”
        结果
        颜色