- java.lang.Object
-
- javax.swing.text.StyleContext
-
- javax.swing.text.html.StyleSheet
-
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
-
-
嵌套类汇总
嵌套类 变量和类型 类 描述 static classStyleSheet.BoxPainter类来执行CSS格式化的一些职责。static classStyleSheet.ListPainter类来执行CSS列表格式化的一些职责。-
嵌套类/接口声明在类 javax.swing.text.StyleContext
StyleContext.NamedStyle, StyleContext.SmallAttributeSet
-
-
字段汇总
-
声明的属性在类 javax.swing.text.StyleContext
DEFAULT_STYLE
-
-
构造方法摘要
构造方法 构造器 描述 StyleSheet()构造一个StyleSheet
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 AttributeSetaddAttribute(AttributeSet old, Object key, Object value)将属性添加到给定集,并返回新的代表集。AttributeSetaddAttributes(AttributeSet old, AttributeSet attr)向元素添加一组属性。voidaddCSSAttribute(MutableAttributeSet attr, CSS.Attribute key, String value)将CSS属性添加到给定集合。booleanaddCSSAttributeFromHTML(MutableAttributeSet attr, CSS.Attribute key, String value)将CSS属性添加到给定集合。voidaddRule(String rule)向工作表添加一组规则。voidaddStyleSheet(StyleSheet ss)将StyleSheetss的规则添加到接收器的规则中。protected MutableAttributeSetcreateLargeAttributeSet(AttributeSet a)创建一大堆属性,这些属性应该在空间上进行权衡。protected StyleContext.SmallAttributeSetcreateSmallAttributeSet(AttributeSet a)创建可以共享的紧凑属性集。ColorgetBackground(AttributeSet a)获取一组属性并将其转换为背景颜色规范。URLgetBase()返回基数。StyleSheet.BoxPaintergetBoxPainter(AttributeSet a)获取框格式化程序以用于给定的CSS属性集。AttributeSetgetDeclaration(String decl)将CSS声明转换为表示CSS声明的AttributeSet。FontgetFont(AttributeSet a)获取用于给定属性集的字体。ColorgetForeground(AttributeSet a)获取一组属性并将其转换为前景色规范。static intgetIndexOfSize(float pt)返回HTML / CSS大小模型的索引。StyleSheet.ListPaintergetListPainter(AttributeSet a)获取列表格式化程序以用于给定的CSS属性集。floatgetPointSize(int index)给定大小索引,返回磅值。floatgetPointSize(String size)给定诸如“+2”,“ - 2”或“2”的字符串,返回点大小值。StylegetRule(String selector)获取与字符串形式中给出的选择器最匹配的规则。StylegetRule(HTML.Tag t, Element e)获取用于呈现给定类型的HTML标记的样式。StyleSheet[]getStyleSheets()返回链接的StyleSheets的数组。AttributeSetgetViewAttributes(View v)获取要在视图中使用的一组属性以进行显示。voidimportStyleSheet(URL url)从url导入样式表。voidloadRules(Reader in, URL ref)加载一组已根据CSS1语法指定的规则。AttributeSetremoveAttribute(AttributeSet old, Object key)从集合中删除属性。AttributeSetremoveAttributes(AttributeSet old, Enumeration<?> names)删除元素的一组属性。AttributeSetremoveAttributes(AttributeSet old, AttributeSet attrs)删除一组属性。voidremoveStyle(String nm)删除先前添加到文档中的命名样式。voidremoveStyleSheet(StyleSheet ss)从接收器中删除StyleSheetss。voidsetBase(URL base)设置基数。voidsetBaseFontSize(int sz)设置基本字体大小,有效值介于1和7之间。voidsetBaseFontSize(String size)从传入的String中设置基本字体大小。ColorstringToColor(String string)将颜色字符串(如“RED”或“#NNNNNN”)转换为颜色。AttributeSettranslateHTMLToCSS(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
-
-
-
-
方法详细信息
-
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)
将StyleSheetss的规则添加到接收器的规则中。ss's规则将覆盖以前添加的任何样式表的规则。 添加的StyleSheet永远不会覆盖接收样式表的规则。- 参数
-
ss- 样式表 - 从以下版本开始:
- 1.3
-
removeStyleSheet
public void removeStyleSheet(StyleSheet ss)
从接收器中删除StyleSheetss。- 参数
-
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属性集。
-
addAttribute
public AttributeSet addAttribute(AttributeSet old, Object key, Object value)
将属性添加到给定集,并返回新的代表集。 这是重新实现的,以便在转发到超类行为之前将StyleConstant属性转换为CSS。 StyleConstants属性没有相应的CSS条目,StyleConstants属性存储(但很可能未使用)。- Specified by:
-
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。- Specified by:
-
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属性。- Specified by:
-
removeAttribute在界面AbstractDocument.AttributeContext - 重写:
-
removeAttribute,类StyleContext - 参数
-
old- 旧的属性集 -
key- 非null属性名称 - 结果
- 更新的属性集
- 另请参见:
-
MutableAttributeSet.removeAttribute(java.lang.Object)
-
removeAttributes
public AttributeSet removeAttributes(AttributeSet old, Enumeration<?> names)
删除元素的一组属性。 如果任何属性是StyleConstants属性,则在转发到超类行为之前,请求将转换为CSS属性。- Specified by:
-
removeAttributes在界面AbstractDocument.AttributeContext - 重写:
-
removeAttributes在类StyleContext - 参数
-
old- 旧属性集 -
names- 属性名称 - 结果
- 更新的属性集
- 另请参见:
-
MutableAttributeSet.removeAttributes(java.util.Enumeration<?>)
-
removeAttributes
public AttributeSet removeAttributes(AttributeSet old, AttributeSet attrs)
删除一组属性。 如果任何属性是StyleConstants属性,则在转发到超类行为之前,请求将转换为CSS属性。- Specified by:
-
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)
从传入的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字符串 - 结果
- 点大小值。
-
-