- java.lang.Object
-
- javax.swing.text.StyleContext
-
- javax.swing.text.html.StyleSheet
-
public class StyleSheetextends 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 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)
将StyleSheetss
的规则添加到接收器的规则中。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声明转换为表示CSS声明的AttributeSet。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()
返回链接的StyleSheets的数组。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)
从接收器中删除StyleSheetss
。void
setBase(URL base)
设置基数。void
setBaseFontSize(int sz)
设置基本字体大小,有效值介于1和7之间。void
setBaseFontSize(String size)
从传入的String中设置基本字体大小。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
-
-
-
-
方法详细信息
-
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字符串 - 结果
- 点大小值。
-
-