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

      public AttributeSet addAttribute(AttributeSet old, Object key, Object value)
      指定されたセットに属性を追加し、その新しいセットを返します。 スーパー・クラスの動作に転送する前に、StyleConstant属性をCSSに変換するために実装し直されます。 StyleConstants属性には、StyleConstants属性が格納される(ただし使われそうにない)、対応するCSSエントリがありません。
      定義:
      addAttribute、インタフェースAbstractDocument.AttributeContext
      オーバーライド:
      addAttribute、クラスStyleContext
      パラメータ:
      old - 旧属性セット
      key - null以外の属性キー
      value - 属性値
      戻り値:
      更新属性セット
      関連項目:
    • addAttributes

      public AttributeSet addAttributes(AttributeSet old, AttributeSet attr)
      属性セットを要素に追加します。 属性のどれかがStyleConstants属性の場合、その属性はスーパー・クラスの動作に転送される前にCSSに変換されます。
      定義:
      addAttributes、インタフェースAbstractDocument.AttributeContext
      オーバーライド:
      addAttributes、クラスStyleContext
      パラメータ:
      old - 旧属性セット
      attr - 追加する属性
      戻り値:
      更新属性セット
      関連項目:
    • removeAttribute

      public AttributeSet removeAttribute(AttributeSet old, Object key)
      セットから属性を削除します。 その属性がStyleConstants属性の場合、要求はスーパー・クラスの動作に転送される前にCSS属性に変換されます。
      定義:
      removeAttribute、インタフェースAbstractDocument.AttributeContext
      オーバーライド:
      removeAttribute、クラスStyleContext
      パラメータ:
      old - 旧属性セット
      key - null以外の属性名
      戻り値:
      更新属性セット
      関連項目:
    • removeAttributes

      public AttributeSet removeAttributes(AttributeSet old, Enumeration<?> names)
      要素の属性セットを削除します。 属性のどれかがStyleConstants属性の場合、要求はスーパー・クラスの動作に転送される前にCSS属性に変換されます。
      定義:
      removeAttributes、インタフェースAbstractDocument.AttributeContext
      オーバーライド:
      removeAttributes、クラスStyleContext
      パラメータ:
      old - 旧属性セット
      names - 属性名
      戻り値:
      更新属性セット
      関連項目:
    • removeAttributes

      public AttributeSet removeAttributes(AttributeSet old, AttributeSet attrs)
      属性セットを削除します。 属性のどれかがStyleConstants属性の場合、要求はスーパー・クラスの動作に転送される前にCSS属性に変換されます。
      定義:
      removeAttributes、インタフェースAbstractDocument.AttributeContext
      オーバーライド:
      removeAttributes、クラスStyleContext
      パラメータ:
      old - 旧属性セット
      attrs - 属性
      戻り値:
      更新属性セット
      関連項目:
    • 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"などの色文字列
      戻り値: