使用Synth LaF,我無法爲DISABLED狀態設置JLabel的FOREGROUND顏色。有沒有人成功做到這一點?這是我的LaF.xml文件中的標籤樣式定義。Synth LaF JLabel DISABLED顏色
<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文件中定義的其他樣式在我的應用程序,包括我的標籤的白正常狀態下的顏色呈現正確(這只是從來沒有去黑當我做lbl.setEnabled(假)
而且,通過合成器的代碼去,我發現下面的評論中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
感謝您的幫助!
不幸的是,TEXT_FOREGROUND不起作用Ë ither。事實上,如果你看看我從Synth代碼中粘貼的代碼片段,你可以看到設置FOREGROUND或TEXT_FOREGROUND具有相同的效果。 – mmoris 2010-05-12 13:38:53
您粘貼的代碼片段與Sun的JDK 1.5中的代碼片段不同(我將它粘貼到下一個答案中)。我們公司已經交付了開源的基於Synth的L&F,解決了這個問題。你可以谷歌「EaSynth外觀和感覺」。 – 2010-05-13 02:05:53