モジュール java.desktop
パッケージ 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規則もある場合、本文のバックグラウンドを何色にすべきかについて不明確になります。 現在の実装では、要素で定義された視覚的な属性を最優先します。つまり、それらの属性は常にスタイルより先に確認されます。 したがって上記の例では、body要素がバックグラウンド・カラーを赤に定義しているため、バックグラウンドは赤になります。

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

    実装上の注意:
    この実装は現在不完全です。 将来、代替の実装によって置き換えられる可能性があります。 このクラスの今後のバージョンでは、より優れたCSSサポートが提供される予定です。
    関連項目:
    直列化された形式
    • コンストラクタの詳細

      • 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からの新しい属性が含まれるということです。

        パラメータ:
        selector - スペースで区切られた要素名のString。
        戻り値:
        セレクタに最も適合するルール。
      • addRule

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

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

        public void removeStyleSheet​(StyleSheet ss)
        レシーバのStyleSheet ssからStyleSheet ssを削除します。
        パラメータ:
        ss - StyleSheet
        導入されたバージョン:
        1.3
      • getStyleSheets

        public StyleSheet[] getStyleSheets​()
        リンクされたStyleSheetの配列を返します。 リンクされたStyleSheetがない場合はnullを返します。
        戻り値:
        StyleSheetsの配列。
        導入されたバージョン:
        1.3
      • importStyleSheet

        public void importStyleSheet​(URL url)
        urlからスタイル・シートをインポートします。 結果として得られる規則はレシーバに直接登録されます。 規則をレシーバの一部にしたくない場合は、新しいStyleSheetを作成してaddStyleSheet使ってそのStyleSheetをリンクさせます。
        パラメータ:
        url - 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属性値
        戻り値:
        HTML属性valueをCSS属性に変換できる場合はtrue、そうでない場合はfalseです。
        導入されたバージョン:
        1.3
      • translateHTMLToCSS

        public AttributeSet translateHTMLToCSS​(AttributeSet htmlAttrSet)
        HTML属性のセットを、同等のCSS属性のセットに変換します。
        パラメータ:
        htmlAttrSet - HTML属性を含むAttributeSet。
        戻り値:
        CSS属性のセット。
      • 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文字列
        戻り値:
        ポイント・サイズの値。
      • stringToColor

        public Color stringToColor​(String string)
        「RED」または「#NNNNNN」などの色文字列をColorに変換します。 注: HTML3.2準拠の色文字列または長さ7の文字列だけを変換し、それ以外はnullを返すことに注意してください。
        パラメータ:
        string - "RED"や"#NNNNNN"などの色文字列
        戻り値: