JLabelに定義されたスタイルがあります。
<style id="myLabel">
<state>
<opaque value="true"/>
<color value="blue" type="BACKGROUND"/>
<color value="red" type="FOREGROUND"/>
</state>
</style>
<bind style="myLabel" type="region" key="label"/>
ただし、特定のJLabel(特定のJPanels内)のスタイルを完全に異なるものにする必要があります。
<style id="myUnrelatedPanel">
<state>
<opaque value="true"/>
<color value="green" type="BACKGROUND"/>
<color value="yellow" type="FOREGROUND"/>
</state>
</style>
<bind style="myLabel" type="name" key="_valueOfMyPanel.getName()_in_here"/>
JLabelのスタイルが適用されているため、上記は機能しません。
ネストスタイルが機能していないようです。コンパイラは文句を言いません。Synthはスタイル領域を取得します-'label'に固定され、スタイルシート内のすべてのラベルに適用されます。
Synthに関する限定されたJavaドキュメントからの次の抜粋は、リージョンと名前に適用されるスタイルを混在させることが可能であり、それらの値がマージされることを示唆しています。
リージョンとしてバインドされているかどうかに関係なく、個々の名前付きコンポーネントにバインドできます。たとえば、GUIの[OK]ボタンと[キャンセル]ボタンを他のすべてのボタンとは異なる方法で処理したいとします。まず、component.setName()メソッドを使用して、[OK]ボタンと[キャンセル]ボタンに名前を付けます。次に、3つのスタイルを定義します。1つは一般的なボタン(region = "Button")、1つはOKボタン(name = "OK")、もう1つはキャンセルボタン(name = "Cancel")です。最後に、次のようにこれらのスタイルをバインドします。
<bind style="styleButton" type="region" key="Button">
<bind style="styleOK" type="name" key="OK">
<bind style="styleCancel" type="name" key="Cancel">
コンポーネントまたはリージョンが複数のスタイルにバインドされている場合、スタイルはマージされます
注:スタイルを複数のリージョンまたは名前にバインドできるのと同様に、複数のスタイルをリージョンまたは名前にバインドできます。これらの複数のスタイルは、地域または名前に対してマージされます。ファイルの後半で定義されたスタイルが優先されます
ただし、最初のスタイルで定義されたものを2番目のスタイルで定義されたものでオーバーライドできるようには見えませんか?