Java™ Platform
Standard Edition 7

パッケージ javax.swing.plaf.synth

Synth は、すべてのペイントが委譲されるスキン設定可能な Look & Feel です。

参照: 説明

パッケージ javax.swing.plaf.synth の説明

Synth は、すべてのペイントが委譲されるスキン設定可能な Look & Feel です。Synth にはデフォルトの外観はありません。Synth を使用するためには、ファイルを指定するか、SynthStyleFactory を提供する必要があります。どちらの構成オプションを使用する場合も、次に説明する合成アーキテクチャーの知識と Swing のアーキテクチャーの知識が必要です。

特に指定されていないかぎり、Synth パッケージに定義されたメソッドに対して null は有効な値ではないため、null が渡されると、NullPointerException がスローされます。

Synth

Synth のそれぞれの ComponentUI 実装では、それ自体を Region ごとに 1 つの SynthStyle と関連付けますが、ほとんどの ComponentRegion を 1 つしか持っていないため、SynthStyle も 1 つだけとなります。SynthStyle は、スタイルに関連したすべてのプロパティー (フォント、色などの Component のプロパティー) にアクセスするために使用されます。また、SynthStyle は、Component のバックグラウンド、ボーダー、フォーカスなどの部分をペイントするために SynthPainter を取得する際にも使用されます。ComponentUI は、SynthStyleSynthStyleFactory から取得します。SynthStyleFactory は、SynthLookAndFeel.setStyleFactory(javax.swing.plaf.synth.SynthStyleFactory) を介して直接提供することも、SynthLookAndFeel.load(java.io.InputStream, java.lang.Class<?>) を介して間接的に提供することもできます。次の例では、SynthLookAndFeel.load() メソッドを使用して SynthLookAndFeel を構成し、それを現在の Look & Feel として設定しています。

  SynthLookAndFeel laf = new SynthLookAndFeel();
  laf.load(MyClass.class.getResourceAsStream("laf.xml"), MyClass.class);
  UIManager.setLookAndFeel(laf);
      

多くの JComponent は小さく分割され、Region 内の型保証された列挙によって識別されます。たとえば、JTabbedPane は、JTabbedPane 用の Region (Region.TABBED_PANE)、コンテンツ領域 (Region.TABBED_PANE_CONTENT)、タブの背後にある領域 (Region.TABBED_PANE_TAB_AREA)、およびタブ (Region.TABBED_PANE_TAB) から構成されます。各 JComponent の各 Region には SynthStyle が 1 つずつあります。これにより、各 JComponent の各領域の個々の部分をカスタマイズできます。

多くの Synth メソッドは SynthContext を取ります。これは、現在の Component に関する情報を提供するために使用され、現在の Region に関連付けられた SynthStyleComponent の状態を表すビットマスク (有効な状態については、SynthConstants を参照)、およびペイントされる Component の部分を識別する Region が含まれています。

JTextComponent 以外によるテキストの描画はすべて、SynthGraphicsUtils に委譲され、これは、SynthStyle のメソッド SynthStyle.getGraphicsUtils(javax.swing.plaf.synth.SynthContext) を使って取得されます。テキスト描画は、独自の SynthGraphicsUtils を指定することでカスタマイズできます。

各コンポーネントの注意事項

JTree

Synth は、ツリーのセル用の領域 Region.TREE_CELL を提供します。レンダラの色を指定するには、TREE_CELL 領域にスタイルを提供します。次に、この例を示します。

  <style id="treeCellStyle">
    <opaque value="TRUE"/>
    <state>
      <color value="WHITE" type="TEXT_FOREGROUND"/>
      <color value="RED" type="TEXT_BACKGROUND"/>
    </state>
    <state value="SELECTED">
      <color value="RED" type="TEXT_FOREGROUND"/>
      <color value="WHITE" type="BACKGROUND"/>
    </state>
  </style>
  <bind style="treeCellStyle" type="region" key="TreeCell"/>

この例では、選択されているときは白地に赤、選択されていないときは赤地に白の色の組み合わせを指定しています。バックグラウンドを表示するには、ラベルを透明にする必要があります。このためには、次の XML (抜粋) を使用します。

  <style id="labelStyle">
    <opaque value="FALSE"/>
  </style>
  <bind style="labelStyle" type="region" key="Label"/>

JList と JTable

JList と JTable のレンダラで使用する色は、リスト領域とテーブル領域を使って指定します。次の XML (抜粋) は、選択されているときは白地に赤、選択されていないときは赤地に白の色を指定する方法を示しています。

  <style id="style">
    <opaque value="TRUE"/>
    <state>
      <color value="WHITE" type="TEXT_FOREGROUND"/>
      <color value="RED" type="TEXT_BACKGROUND"/>
      <color value="RED" type="BACKGROUND"/>
    </state>
    <state value="SELECTED">
      <color value="RED" type="TEXT_FOREGROUND"/>
      <color value="WHITE" type="TEXT_BACKGROUND"/>
    </state>
  </style>
  <bind style="style" type="region" key="Table"/>
  <bind style="style" type="region" key="List"/>
Java™ Platform
Standard Edition 7

バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.