У меня есть стиль, определенный для JLabel:Swing Synth Skin: Можете ли вы переопределить стили?
<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 (в некоторых классах JPanel), чтобы быть в стиле совершенно по-разному:
<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 поднимает область стиля, привязанную к метке, и применяет ее ко всем меткам в таблице стилей.
Следующая выдержка из ограниченной документации Java на синтезаторе предполагает, что можно смешивать стили, применяемые к регионам и имен, и их значения будут объединены:
Вы можете привязать к индивидууму, названный компоненты, независимо от того, являются ли они также связанными как регионы. Например, предположим, что вы хотите, чтобы кнопки «ОК» и « « Отмена »в вашем графическом интерфейсе обработаны иначе, чем все остальные кнопки . Сначала вы дадите имена OK и Cancel, используя метод component_setName() . Затем вы определяете три стиля: один для кнопок (регион = «Кнопка»), один для кнопки «ОК» (имя = «ОК»), и один для кнопки «Отмена» (имя = «Отмена»)). Наконец, вы бы связать эти стили, как это:
<bind style="styleButton" type="region" key="Button">
<bind style="styleOK" type="name" key="OK">
<bind style="styleCancel" type="name" key="Cancel">
Когда компонент или регион связан с более одного стиля, стили объединены
Примечание: Так же, как стиль может быть связан с несколькими регионами или именами, несколькими типами могут быть связаны с регионом или имя. Эти несколько стилей объединяются для региона или имени. Старшинства дано стилей, определенных ниже в файле
Однако, не кажется, что определено в первом стиле может быть перекрытая с помощью определенного во втором стиле?