Synth LaFを使用して、JLabelのFOREGROUNDカラーをDISABLED状態に設定できません。誰かがこれを行うことに成功しましたか?これが私のLaF.xmlファイルでの私のラベルのスタイル定義です。
<style id="whiteLabelStyle">
<opaque value="false"/>
<font name="Bitstream Vera Sans" size="16" />
<state>
<color type="FOREGROUND" value="WHITE"/>
</state>
<state value="DISABLED">
<color type="FOREGROUND" value="BLACK"/>
</state>
</style>
<bind style="whiteLabelStyle" type="name" key="WhiteOrbitLabel"/>
LaF.xmlファイルで定義されている他のすべてのスタイルが、ラベルのWHITEの通常の状態の色を含め、アプリケーションで適切にレンダリングされることに注意してください(lbl.setEnabled(false)を実行すると黒になりません)
また、Synthコードを調べてみると、SynthStyle.getColorに次のコメントがあります。
if ((context.getComponentState() & SynthConstants.DISABLED) != 0) {
//This component is disabled, so return the disabled color.
//In some cases this means ignoring the color specified by the
//developer on the component. In other cases it means using a
//specified disabledTextColor, such as on JTextComponents.
//For example, JLabel doesn't specify a disabled color that the
//developer can set, yet it should have a disabled color to the
//text when the label is disabled. This code allows for that.
if (c instanceof JTextComponent) {
JTextComponent txt = (JTextComponent)c;
Color disabledColor = txt.getDisabledTextColor();
if (disabledColor == null || disabledColor instanceof UIResource) {
return getColorForState(context, type);
}
} else if (c instanceof JLabel
&& (type == ColorType.FOREGROUND || type == ColorType.TEXT_FOREGROUND)){
return getColorForState(context, type);
}
しかし、JLabelに無効な色を設定する方法がわかりませんでした
ご協力いただきありがとうございます!