JavaTM 2 Platform
Standard Ed. 6

javax.swing.text.html
類別 StyleSheet

java.lang.Object
  繼承者 javax.swing.text.StyleContext
      繼承者 javax.swing.text.html.StyleSheet
所有已實作的介面:
Serializable, AbstractDocument.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 規範。

為使 View 存儲較少的狀態並因此變得更輕量級,StyleSheet 可充當處理某些呈現任務的 painter 的處理器。此方法允許實作來確定要快取記憶體的內容,以及在選擇器通常為多視圖的級別上可能共享的內容。由於 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 樣式未良好定義的情況,在這種情況下,CSS 樣式應根據元素的定義覆寫可視屬性。例如,html <body bgcolor=red> 將使主體呈現為紅色背景。但如果該 html 檔案還包含 CSS 規則 body { background:blue },則該主體的背景就沒有它該呈現的顏色清晰了。當前的實作為在元素中定義的可視屬性提供了最高優先權,也就是說在應用任何樣式之前都要先檢查它們。因此,在前面的範例中,當主體元素將背景顏色定義為紅色時,其背景也將成為紅色。

正如前面提到的那樣,此方法支持 CSS。我們不提供對所有 CSS 規範的支持。請參考 CSS 類別的 javadoc 以查看我們支持的屬性。我們當前不支持的兩種主要的 CSS 解析相關的概念是偽選擇器,如 A:link { color:red }important 修飾符。

註:此實作目前尚不完整。可以使用完整的替代實作來取代它。此類別的未來版本將提供更好的 CSS 支持。


巢狀類別摘要
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)
          向 sheet 添加規則集合。
 void addStyleSheet(StyleSheet ss)
          將 StyleSheet ss 中的規則添加到接收者的規則中。
protected  MutableAttributeSet createLargeAttributeSet(AttributeSet a)
          創建一個以空間來換取時間的大屬性集合。
protected  StyleContext.SmallAttributeSet createSmallAttributeSet(AttributeSet a)
          創建可以共享的屬性壓縮集。
 Color getBackground(AttributeSet a)
          獲取一個屬性集並將其轉換為背景色規範。
 URL getBase()
          返回 base。
 StyleSheet.BoxPainter getBoxPainter(AttributeSet a)
          獲取給定 CSS 屬性集合使用的框 formatter。
 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 屬性集合使用的列表 formatter。
 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()
          返回一個連接 StyleSheet 的陣列。
 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)
          設置 base。
 void setBaseFontSize(int sz)
          設置基本字體大小,其有效值範圍為 1 到 7。
 void setBaseFontSize(String size)
          根據傳入的 String 設置基本字體大小。
 Color stringToColor(String string)
          將顏色字元串(如 "RED" 或 "#NNNNNN")轉換為 Color。
 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
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

建構子詳細資訊

StyleSheet

public StyleSheet()
建構 StyleSheet

方法詳細資訊

getRule

public Style getRule(HTML.Tag t,
                     Element e)
獲取用來呈現給定型別的 HTML 標記的樣式。給定的元素代表標記,可用來確定是什麼樣的巢狀情形:是巢狀在元素的內部還是外部,這兩種情況的屬性是不一樣的。

參數:
t - 將轉換為可視屬性的型別
e - 表示標記的元素;該元素可用於確定巢狀的情況,如果巢狀在其他元素的內部,則屬性將不同
返回:
用來呈現標記的 CSS 屬性集合

getRule

public Style getRule(String selector)
獲取最能比對以字元串形式表示的選擇器的規則。其中 selector 是由空格隔開的元素名稱 String。例如,selector 可以是 'html body tr td'

返回的 Style 屬性將隨著添加和移除規則進行更改。也就是說,如果要請求一個具有選擇器 "table p" 的規則,並添加了具有選擇器 "p" 的新規則,則返回的 Style 將包括來自規則 "p" 的新屬性。


addRule

public void addRule(String rule)
向 sheet 添加規則集合。該規則應是有效的 CSS 格式。通常情況下將根據對 <style> 標記的解析結果調用此方法。


getDeclaration

public AttributeSet getDeclaration(String decl)
將 CSS 宣告轉換為表示 CSS 宣告的 AttributeSet。通常在遇到 HTML 樣式屬性時將調用此方法。


loadRules

public void loadRules(Reader in,
                      URL ref)
               throws IOException
載入 CSS1 語法中指定的規則集合。如果與現有的規則發生了衝突,則保留新指定的規則。

參數:
in - 要從其讀取 CSS 語法的串流
ref - 參考 URL。此值表示串流的位置,可以為 null。所有在串流中指定的相關 URL 都將以此參數為依據。
拋出:
IOException

getViewAttributes

public AttributeSet getViewAttributes(View v)
獲取用來顯示視圖的屬性集。這基本上是一個可用於 View.getAttributes 的屬性集。


removeStyle

public void removeStyle(String nm)
移除以前添加到該文檔中的指定樣式。

覆寫:
類別 StyleContext 中的 removeStyle
參數:
nm - 要移除的樣式的名稱

addStyleSheet

public void addStyleSheet(StyleSheet ss)
將 StyleSheet ss 中的規則添加到接收者的規則中。ss's 規則將覆寫以前添加的所有樣式表的規則。添加的 StyleSheet 永遠不會覆寫接收樣式表的規則。

從以下版本開始:
1.3

removeStyleSheet

public void removeStyleSheet(StyleSheet ss)
從接收者的規則中移除 StyleSheet ss

從以下版本開始:
1.3

getStyleSheets

public StyleSheet[] getStyleSheets()
返回一個連接 StyleSheet 的陣列。如果不存在連接 StyleSheet,則返回 null。

從以下版本開始:
1.3

importStyleSheet

public void importStyleSheet(URL url)
url 導入樣式表。得到的規則將直接添加到接收者中。如果不想讓這些規則成為接收者的一部分,則要創建一個新的 StyleSheet,並使用 addStyleSheet 與其連接。

從以下版本開始:
1.3

setBase

public void setBase(URL base)
設置 base。所有相關的導入語句都將與 base 相關。

從以下版本開始:
1.3

getBase

public URL getBase()
返回 base。

從以下版本開始:
1.3

addCSSAttribute

public void addCSSAttribute(MutableAttributeSet attr,
                            CSS.Attribute key,
                            String value)
將 CSS 屬性添加到給定的集合。

從以下版本開始:
1.3

addCSSAttributeFromHTML

public boolean addCSSAttributeFromHTML(MutableAttributeSet attr,
                                       CSS.Attribute key,
                                       String value)
將 CSS 屬性添加到給定的集合。

從以下版本開始:
1.3

translateHTMLToCSS

public AttributeSet translateHTMLToCSS(AttributeSet htmlAttrSet)
將 HTML 屬性集合轉換為對等的 CSS 屬性集合。

參數:
htmlAttrSet - 套件含 HTML 屬性的 AttributeSet。

addAttribute

public AttributeSet addAttribute(AttributeSet old,
                                 Object key,
                                 Object value)
向給定集合添加屬性,並返回新的表示方式的集合。實作此方法以將 StyleConstant 屬性轉換為 CSS,然後轉發給父級類別行為。StyleConstants 屬性沒有相應的 CSS 項,將會存儲 StyleConstants 屬性(但不一定有用)。

指定者:
介面 AbstractDocument.AttributeContext 中的 addAttribute
覆寫:
類別 StyleContext 中的 addAttribute
參數:
old - 原有屬性集
key - 非 null 屬性鍵
value - 屬性值
返回:
更新的屬性集
另請參見:
MutableAttributeSet.addAttribute(java.lang.Object, java.lang.Object)

addAttributes

public AttributeSet addAttributes(AttributeSet old,
                                  AttributeSet attr)
向元素添加屬性集。如果這些屬性都是 StyleConstants 屬性,則會將它們轉換為 CSS,然後再轉發給父級類別行為。

指定者:
介面 AbstractDocument.AttributeContext 中的 addAttributes
覆寫:
類別 StyleContext 中的 addAttributes
參數:
old - 原有屬性集
attr - 要添加的屬性
返回:
更新後的屬性集
另請參見:
MutableAttributeSet.addAttribute(java.lang.Object, java.lang.Object)

removeAttribute

public AttributeSet removeAttribute(AttributeSet old,
                                    Object key)
從集合中移除屬性。如果該屬性是 StyleConstants 屬性,則會將請求轉換為 CSS 屬性,然後再轉發給父級類別行為。

指定者:
介面 AbstractDocument.AttributeContext 中的 removeAttribute
覆寫:
類別 StyleContext 中的 removeAttribute
參數:
old - 原有的屬性集
key - 非 null 屬性名稱
返回:
更新的屬性集
另請參見:
MutableAttributeSet.removeAttribute(java.lang.Object)

removeAttributes

public AttributeSet removeAttributes(AttributeSet old,
                                     Enumeration<?> names)
移除元素的屬性集。如果所有屬性都是 StyleConstants 屬性,則該請求將會轉換為 CSS 屬性,然後再轉發給父級類別行為。

指定者:
介面 AbstractDocument.AttributeContext 中的 removeAttributes
覆寫:
類別 StyleContext 中的 removeAttributes
參數:
old - 原有屬性集
names - 屬性名
返回:
更新後的屬性集
另請參見:
MutableAttributeSet.removeAttributes(java.util.Enumeration)

removeAttributes

public AttributeSet removeAttributes(AttributeSet old,
                                     AttributeSet attrs)
移除屬性集。如果所有屬性都是 StyleConstants 屬性,則該請求將會轉換為 CSS 屬性,然後再轉發給父級類別行為。

指定者:
介面 AbstractDocument.AttributeContext 中的 removeAttributes
覆寫:
類別 StyleContext 中的 removeAttributes
參數:
old - 原有屬性集
attrs - 屬性
返回:
更新後的屬性集
另請參見:
MutableAttributeSet.removeAttributes(java.util.Enumeration)

createSmallAttributeSet

protected StyleContext.SmallAttributeSet createSmallAttributeSet(AttributeSet a)
創建可以共享的屬性壓縮集。這是想要改變 SmallAttributeSet 行為的子類別的一個鉤子。重新實作此方法以返回提供某種屬性轉換的 AttributeSet。

覆寫:
類別 StyleContext 中的 createSmallAttributeSet
參數:
a - 以壓縮形式表示的屬性集。

createLargeAttributeSet

protected MutableAttributeSet createLargeAttributeSet(AttributeSet a)
創建一個以空間來換取時間的大屬性集合。此集合將不可共享。這是想要改變更大屬性存儲樣式(預設情況下是 SimpleAttributeSet)的子類別的一個鉤子。重新實作此方法以返回提供某種屬性轉換的 MutableAttributeSet。

覆寫:
類別 StyleContext 中的 createLargeAttributeSet
參數:
a - 以更大形式表示的屬性集。

getFont

public Font getFont(AttributeSet a)
獲取給定屬性集使用的字體。

覆寫:
類別 StyleContext 中的 getFont
參數:
a - 屬性集
返回:
字體

getForeground

public Color getForeground(AttributeSet a)
獲取一個屬性集並將其轉換為前景色規範。此方法可以用於指定諸如更亮、更鮮艷等之類別的內容。

覆寫:
類別 StyleContext 中的 getForeground
參數:
a - 屬性集
返回:
顏色

getBackground

public Color getBackground(AttributeSet a)
獲取一個屬性集並將其轉換為背景色規範。此方法可以用於指定諸如更亮、更鮮艷等之類別的內容。

覆寫:
類別 StyleContext 中的 getBackground
參數:
a - 屬性集
返回:
顏色

getBoxPainter

public StyleSheet.BoxPainter getBoxPainter(AttributeSet a)
獲取給定 CSS 屬性集合使用的框 formatter。


getListPainter

public StyleSheet.ListPainter getListPainter(AttributeSet a)
獲取給定 CSS 屬性集合使用的列表 formatter。


setBaseFontSize

public void setBaseFontSize(int sz)
設置基本字體大小,其有效值範圍為 1 到 7。


setBaseFontSize

public void setBaseFontSize(String size)
根據傳入的 String 設置基本字體大小。字元串可以標識特定字體大小(有效值在 1 和 7 之間),也可以標識相對字體大小(如 +1 或 -2)。


getIndexOfSize

public static int getIndexOfSize(float pt)

getPointSize

public float getPointSize(int index)
在給定大小索引的情況下返回點大小。


getPointSize

public float getPointSize(String size)
如果給定字元串(如 "+2"、"-2" 或 "2"),則返回點大小值。


stringToColor

public Color stringToColor(String string)
將顏色字元串(如 "RED" 或 "#NNNNNN")轉換為 Color。註:此方法僅轉換 HTML3.2 顏色字元串或長度為 7 的字元串;否則,將返回 null。


JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only