java stylesheet_StyleSheet

支持定义正在呈现的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

使得正文具有红色背景。 但是如果html文件也包含CSS规则body { background: blue } ,那么身体背景应该是什么颜色就不那么清楚了。 当前实现为元素中定义的可视属性提供了最高优先级,即在任何样式之前始终检查它们。 因此,在前面的示例中,背景将具有红色,因为body元素将背景颜色定义为红色。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值