JavaTM 2 Platform
Standard Ed. 5.0

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 モデルを視覚的な特性に変換するために使用されます。これを使用して、表示の Look & Feel をカスタマイズしたり、同じモデルによる複数のビューをそれぞれ違った形で描画したりできます。これは CSS 規則リポジトリと考えることができます。CSS 属性のキーは CSS.Attribute 型のオブジェクトです。値の型は StyleSheet の実装に応じて異なります。ただし、CSS 値を文字列表現で返すには toString メソッドが必要です。

HTML の View の実装で属性を取得するための主要なエントリポイントは getViewAttributes メソッドです。これは、属性とビューの関連付けに必要なポリシーを確立するために実装する必要があります。各 HTMLEditorKit (また関連する各 JEditorPane) は、専用の StyleSheet を持つことができますが、デフォルトではすべての HTMLEditorKit のインスタンスが 1 つのシートを共有します。HTMLDocument のインスタンスは、特定のドキュメント用の CSS 指定が記述された StyleSheet を持つこともできます。

View が格納する状態を減らし、タスクを軽くするために、StyleSheet は一部の描画タスクを処理するペインタのファクトリとして動作できます。これによって、実装は何をキャッシュするか、1 つのセレクタが複数のビューに共通するレベルで何を共有するかを決定することが可能になります。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 ファイルに body { background: blue } という CSS 規則もある場合、本体のバックグラウンドを何色にするか、不明確になります。現在の実装は、要素で定義された視覚的な属性を最優先します。つまり、それらの属性は常にスタイルより先に確認されます。したがって上記の例では、本体要素がバックグラウンドカラーを赤に定義しているため、バックグラウンドは赤になります。

すでに述べたように、このメソッドは CSS をサポートします。CSS 仕様のすべてをサポートしているわけではありません。どのプロパティをサポートしているかについては、CSS クラスの javadoc を参照してください。現在のところサポートしていない概念に関連する主要な CSS 解析は、A:link { color: red } などの疑似セレクタと、important 修飾子の 2 つです。

注: この実装は、現状では不完全です。将来、代替の実装によって置き換えられる可能性があります。このクラスの今後のバージョンでは、よりすぐれた 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)
          規則セットをシートに登録します。
 void addStyleSheet(StyleSheet ss)
          StyleSheet 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 宣言を表す属性セットに変換します。
 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()
          リンクされた 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 から StyleSheet ss を削除します。
 void setBase(URL 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 です。たとえば html body tr td などです。

返される Style の属性は、規則が追加されたり削除されたりすると変更されます。つまり、セレクタ table p を持つ規則を要求する場合、p というセレクタを持つ新しい規則が追加されていると、返される Style には規則 p からの新しい属性が含まれるということです。


addRule

public void addRule(String rule)
規則セットをシートに登録します。規則は有効な CSS 形式であると想定されます。通常は、これは <style> タグの解析の結果として呼び出されます。


getDeclaration

public AttributeSet getDeclaration(String decl)
CSS 宣言を、CSS 宣言を表す属性セットに変換します。通常は、これは 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 の規則は、すでに登録されているスタイルシートの規則をオーバーライドします。登録されている StyleSheet が新しく受け取るスタイルシートの規則をオーバーライドすることはありません。

導入されたバージョン:
1.3

removeStyleSheet

public void removeStyleSheet(StyleSheet ss)
レシーバの StyleSheet ss から StyleSheet ss を削除します。

導入されたバージョン:
1.3

getStyleSheets

public StyleSheet[] getStyleSheets()
リンクされた StyleSheet の配列を返します。リンクされた StyleSheet がない場合は null を返します。

導入されたバージョン:
1.3

importStyleSheet

public void importStyleSheet(URL url)
url からスタイルシートをインポートします。結果の規則はレシーバに直接登録されます。規則をレシーバの一部にしたくない場合は、新しい StyleSheet を作成して addStyleSheet 使ってその StyleSheet をリンクさせます。

導入されたバージョン:
1.3

setBase

public void setBase(URL base)
ベースを設定します。相関関係のある import 文はすべて、base に関連します。

導入されたバージョン:
1.3

getBase

public URL getBase()
ベースを返します。

導入されたバージョン:
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 属性には、StyleConstants 属性が格納される (ただし使われそうにない)、対応する CSS エントリがありません。

定義:
インタフェース 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 属性のセットで使用するボックスフォーマッタを取り出します。


getListPainter

public StyleSheet.ListPainter getListPainter(AttributeSet a)
指定された CSS 属性のセットで使用するリストフォーマッタを取り出します。


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. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。