パッケージ javax.swing.plaf.synth
SynthStyleFactoryを提供する必要があります。 どちらの構成オプションを使用する場合も、次に説明する合成アーキテクチャの知識とSwingのアーキテクチャの知識が必要です。
特に指定されていないかぎり、Synthパッケージに定義されたメソッドに対してnullは有効な値ではないため、nullが渡されると、NullPointerExceptionがスローされます。
Synth
SynthのそれぞれのComponentUI実装では、それ自体をRegionごとに1つのSynthStyleと関連付けますが、ほとんどのComponentがRegionを1つしか持っていないため、SynthStyleも1つだけとなります。 SynthStyleは、スタイルに関連したすべてのプロパティ(フォント、色などのComponentのプロパティ)にアクセスするために使用されます。 また、SynthStyleは、Componentのバックグラウンド、ボーダー、フォーカスなどの部分をペイントするためにSynthPainterを取得する際にも使用されます。 ComponentUIは、SynthStyleをSynthStyleFactoryから取得します。 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.TABBED_PANE)のRegion、コンテンツ領域(Region.TABBED_PANE_CONTENT)、タブ(Region.TABBED_PANE_TAB_AREA)の背後にある領域、およびタブ(Region.TABBED_PANE_TAB)で構成されます。 各JComponentの各RegionにはSynthStyleが1つずつあります。 これにより、各JComponentの各領域の個々の部分をカスタマイズできます。
多くのSynthメソッドはSynthContextを取ります。 これは、現在のComponentに関する情報を提供するために使用され、現在のRegionに関連付けられたSynthStyle、Componentの状態を表すビット・マスク(有効な状態については、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"/>
-
インタフェースのサマリー インタフェース 説明 SynthConstants Synthが使用する定数です。SynthIcon SynthContextを渡されたアイコン。SynthUI SynthUIは、特定のコンポーネントのSynthContextを取得するために使用します。 -
クラスのサマリー クラス 説明 ColorType スタイルから取得できる型保証された色の列挙です。Region Swingコンポーネントの個別の描画領域です。SynthButtonUI JButtonのSynth L&F UIの委譲を提供します。SynthCheckBoxMenuItemUI JCheckBoxMenuItemのSynth L&F UIの委譲を提供します。SynthCheckBoxUI JCheckBoxのSynth L&F UIの委譲を提供します。SynthColorChooserUI JColorChooserのSynth L&F UIの委譲を提供します。SynthComboBoxUI JComboBoxのSynth L&F UIの委譲を提供します。SynthContext Regionに関するコンテキスト依存の情報を含む不変の一時オブジェクトです。SynthDesktopIconUI デスクトップ上の最小化された内部フレームのSynth L&F UIの委譲を提供します。SynthDesktopPaneUI JDesktopPaneのSynth L&F UIの委譲を提供します。SynthEditorPaneUI JEditorPaneのSynth L&F UIの委譲を提供します。SynthFormattedTextFieldUI JFormattedTextFieldのSynth L&F UIの委譲を提供します。SynthGraphicsUtils 単純な図形の呼出しのためのラッパーです。SynthInternalFrameUI JInternalFrameのSynth L&F UIの委譲を提供します。SynthLabelUI JLabelのSynth L&F UIの委譲を提供します。SynthListUI JListのSynth L&F UIの委譲を提供します。SynthLookAndFeel SynthLookAndFeelは、カスタマイズされたLook & Feelを作成するための基礎を提供します。SynthMenuBarUI JMenuBarのSynth L&F UIの委譲を提供します。SynthMenuItemUI JMenuItemのSynth L&F UIの委譲を提供します。SynthMenuUI JMenuのSynth L&F UIの委譲を提供します。SynthOptionPaneUI JOptionPaneのSynth L&F UIの委譲を提供します。SynthPainter SynthPainterは、JComponentの一部分をペイントするときに使用します。SynthPanelUI JPanelのSynth L&F UIの委譲を提供します。SynthPasswordFieldUI JPasswordFieldのSynth L&F UIの委譲を提供します。SynthPopupMenuUI JPopupMenuのSynth L&F UIの委譲を提供します。SynthProgressBarUI JProgressBarのSynth L&F UIの委譲を提供します。SynthRadioButtonMenuItemUI JRadioButtonMenuItemのSynth L&F UIの委譲を提供します。SynthRadioButtonUI JRadioButtonのSynth L&F UIの委譲を提供します。SynthRootPaneUI JRootPaneのSynth L&F UIの委譲を提供します。SynthScrollBarUI JScrollBarのSynth L&F UIの委譲を提供します。SynthScrollPaneUI JScrollPaneのSynth L&F UIの委譲を提供します。SynthSeparatorUI JSeparatorのSynth L&F UIの委譲を提供します。SynthSliderUI JSliderのSynth L&F UIの委譲を提供します。SynthSpinnerUI JSpinnerのSynth L&F UIの委譲を提供します。SynthSplitPaneUI JSplitPaneのSynth L&F UIの委譲を提供します。SynthStyle SynthStyleは、スタイル・プロパティのセットです。SynthStyleFactory SynthStyleを取得するために使用するファクトリです。SynthTabbedPaneUI JTabbedPaneのSynth L&F UIの委譲を提供します。SynthTableHeaderUI JTableHeaderのSynth L&F UIの委譲を提供します。SynthTableUI JTableのSynth L&F UIの委譲を提供します。SynthTextAreaUI Synth Look & Feelのプレーン・テキスト・エディタのLook & Feelを提供します。SynthTextFieldUI JTextFieldのSynth L&F UIの委譲を提供します。SynthTextPaneUI Synth Look & Feelの書式付きテキスト・エディタのLook & Feelを提供します。SynthToggleButtonUI JToggleButtonのSynth L&F UIの委譲を提供します。SynthToolBarUI JToolBarのSynth L&F UIの委譲を提供します。SynthToolTipUI JToolTipのSynth L&F UIの委譲を提供します。SynthTreeUI JTreeのSynth L&F UIの委譲を提供します。SynthViewportUI JViewportのSynth L&F UIの委譲を提供します。