public class StyleSheet extends StyleContext
toString
方法来返回CSS值的字符串表示形式。
HTML View实现获取其属性的主要入口点是getViewAttributes
方法。 应该实现这一点,以建立用于将属性与视图相关联的所需策略。 每个HTMLEditorKit(即,因此每个关联的JEditorPane)都可以有自己的StyleSheet,但默认情况下,所有HTMLEditorKit实例将共享一个工作表。 HTMLDocument实例也可以有一个StyleSheet,它保存文档特定的CSS规范。
为了让Views存储较少的状态,因此更轻量化,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 }
,那么身体背景应该是什么颜色就不太清楚了。 当前的实现给出了在元素中定义的最高优先级的视觉属性,即它们始终在任何样式之前被检查。 因此,在前面的示例中,背景将具有红色,因为主体元素将背景颜色定义为红色。
如前所述,它支持CSS。 我们不支持完整的CSS规范。 请参考CSS类的javadoc来查看我们支持的属性。 我们目前不支持的两个主要的CSS解析相关概念是伪选择器,例如A:link { color: red }
和important
修饰符。
注意:此实现目前不完整。 它可以替换为完整的替代实现。 此类的未来版本将提供更好的CSS支持。
Modifier and Type | Class and Description |
---|---|
static class |
StyleSheet.BoxPainter
课程执行CSS格式的一些职责。
|
static class |
StyleSheet.ListPainter
课程执行CSS列表格式的一些职责。
|
StyleContext.NamedStyle, StyleContext.SmallAttributeSet
DEFAULT_STYLE
Constructor and Description |
---|
StyleSheet()
构建样式表
|
Modifier and Type | Method and Description |
---|---|
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
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声明转换为表示CSS声明的AttributeSet。
|
Font |
getFont(AttributeSet a)
获取用于给定属性集的字体。
|
Color |
getForeground(AttributeSet a)
获取一组属性,并将其转换为前景颜色规范。
|
static int |
getIndexOfSize(float pt) |
StyleSheet.ListPainter |
getListPainter(AttributeSet a)
获取列表格式化程序以用于给定的一组CSS属性。
|
float |
getPointSize(int index)
给定大小索引返回点大小。
|
float |
getPointSize(String size)
给定一个字符串,如“+2”,“-2”或“2”,返回一个点大小值。
|
Style |
getRule(HTML.Tag t, Element e)
获取用于呈现给定类型的HTML标签的样式。
|
Style |
getRule(String selector)
获取与字符串形式给出的选择器最匹配的规则。
|
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, AttributeSet attrs)
删除一组属性。
|
AttributeSet |
removeAttributes(AttributeSet old, Enumeration<?> names)
删除元素的一组属性。
|
void |
removeStyle(String nm)
删除之前添加到文档的命名样式。
|
void |
removeStyleSheet(StyleSheet ss)
从接收器中删除StyleSheet
ss 。
|
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属性集。
|
addChangeListener, addStyle, getChangeListeners, getCompressionThreshold, getDefaultStyleContext, getEmptySet, getFont, getFontMetrics, getStaticAttribute, getStaticAttributeKey, getStyle, getStyleNames, readAttributes, readAttributeSet, reclaim, registerStaticAttributeKey, removeChangeListener, toString, writeAttributes, writeAttributeSet
public Style getRule(HTML.Tag t, Element e)
t
- 转换为视觉属性的类型
e
- 表示标签的元素;
该元素可用于确定嵌套在属性将不同的情况下,如果嵌套在其他元素内
public Style getRule(String selector)
selector
是元素名称的空格分隔字符串。
例如, selector
可能是'html body tr td''
返回的样式的属性将随规则添加和删除而改变。 也就是说,如果要求使用选择器“table p”的规则,并且添加了一个新的规则,选择器为“p”,返回的样式将包含规则“p”中的新属性。
public void addRule(String rule)
public AttributeSet getDeclaration(String decl)
public void loadRules(Reader in, URL ref) throws IOException
in
- 从中读取CSS语法的流
ref
- 参考网址。
该值表示流的位置,可以为空。
流中指定的所有相对URL将基于此参数。
IOException
public AttributeSet getViewAttributes(View v)
public void removeStyle(String nm)
removeStyle
在
StyleContext
nm
- 要删除的样式的名称
public void addStyleSheet(StyleSheet ss)
ss
到接收器的规则。
ss's
规则将覆盖任何以前添加的样式表的规则。
添加的StyleSheet将不会覆盖接收样式表的规则。
public void removeStyleSheet(StyleSheet ss)
ss
。
public StyleSheet[] getStyleSheets()
public void importStyleSheet(URL url)
url
导入样式表。
生成的规则直接添加到接收器。
如果您不希望规则成为接收者的一部分,请创建一个新的样式表,并使用addStyleSheet将其链接起来。
public void setBase(URL base)
base
。
public URL getBase()
public void addCSSAttribute(MutableAttributeSet attr, CSS.Attribute key, String value)
public boolean addCSSAttributeFromHTML(MutableAttributeSet attr, CSS.Attribute key, String value)
public AttributeSet translateHTMLToCSS(AttributeSet htmlAttrSet)
htmlAttrSet
- 包含HTML属性的AttributeSet。
public AttributeSet addAttribute(AttributeSet old, Object key, Object value)
addAttribute
在界面
AbstractDocument.AttributeContext
addAttribute
在
StyleContext
old
- 旧属性集
key
- 非空属性键
value
- 属性值
MutableAttributeSet.addAttribute(java.lang.Object, java.lang.Object)
public AttributeSet addAttributes(AttributeSet old, AttributeSet attr)
addAttributes
在界面
AbstractDocument.AttributeContext
addAttributes
在
StyleContext
old
- 旧的属性集
attr
- 要添加的属性
MutableAttributeSet.addAttribute(java.lang.Object, java.lang.Object)
public AttributeSet removeAttribute(AttributeSet old, Object key)
removeAttribute
在接口
AbstractDocument.AttributeContext
removeAttribute
在
StyleContext
old
- 旧的一组属性
key
- 非空属性名称
MutableAttributeSet.removeAttribute(java.lang.Object)
public AttributeSet removeAttributes(AttributeSet old, Enumeration<?> names)
removeAttributes
在界面
AbstractDocument.AttributeContext
removeAttributes
在
StyleContext
old
- 旧属性集
names
- 属性名称
MutableAttributeSet.removeAttributes(java.util.Enumeration<?>)
public AttributeSet removeAttributes(AttributeSet old, AttributeSet attrs)
removeAttributes
在接口
AbstractDocument.AttributeContext
removeAttributes
在
StyleContext
old
- 旧属性集
attrs
- 属性
MutableAttributeSet.removeAttributes(java.util.Enumeration<?>)
protected StyleContext.SmallAttributeSet createSmallAttributeSet(AttributeSet a)
createSmallAttributeSet
在类
StyleContext
a
- 以紧凑形式表示的一组属性。
protected MutableAttributeSet createLargeAttributeSet(AttributeSet a)
createLargeAttributeSet
在
StyleContext
a
- 要以较大形式表示的属性集。
public Font getFont(AttributeSet a)
getFont
在
StyleContext
a
- 属性集
public Color getForeground(AttributeSet a)
getForeground
在
StyleContext
a
- 属性集
public Color getBackground(AttributeSet a)
getBackground
在
StyleContext
a
- 属性集
public StyleSheet.BoxPainter getBoxPainter(AttributeSet a)
public StyleSheet.ListPainter getListPainter(AttributeSet a)
public void setBaseFontSize(int sz)
public void setBaseFontSize(String size)
public static int getIndexOfSize(float pt)
public float getPointSize(int index)
public float getPointSize(String size)