【发布时间】:2016-08-04 06:03:19
【问题描述】:
如何设置单选按钮控件的颜色?无论我在样式中指定什么颜色,它都会用黑色绘制外圆和内子弹。我希望它在黑色背景上以白色绘制以匹配我的主题,但它总是以黑色绘制。 (我实际上是在 Multi-Button 中执行此操作,设置 Emblem UIID 的颜色。)
我尝试了第一个建议,定义常量。那没有用。这就是发生的事情。
我尝试了两种方法。首先我只定义了radioSelectedImage 和radioUnselectedImage。当这不起作用时,我添加了两个 radio*DisImage 值,但它做了同样的事情。选中和未选中的图像都可以正常工作,但只要我触摸一个单选按钮,它就会获得焦点,并且该按钮被绘制为黑色,这使得它在我的黑色背景下不可见。
我确实找到了一种可行的方法,但它需要使用两个已弃用的类。这是我添加到主类的 init() 方法中的内容:
LookAndFeel lookAndFeel = UIManager.getInstance().getLookAndFeel();
if (lookAndFeel instanceof DefaultLookAndFeel) {
DefaultLookAndFeel defaultLookAndFeel = (DefaultLookAndFeel) lookAndFeel;
Image sel = theme.getImage("RadioButtonSelected.png");
Image unSel = theme.getImage("RadioButtonUnselected.png");
defaultLookAndFeel.setRadioButtonImages(sel, unSel, sel, unSel);
defaultLookAndFeel.setRadioButtonFocusImages(sel, unSel, sel, unSel);
}
这里的区别在于我有一种设置焦点图像的方法。我不能使用常量来做到这一点,这可能是它不起作用的原因。我真的不想使用已弃用的类。
【问题讨论】:
-
您的主题是否有
includeNative选项?您的主题是否在主题常量中定义了单选按钮图像? -
我尝试了 includeNativeBool 两种方式,但没有任何区别。正如我在附录中指出的那样,我确实在我的主题中定义了 radio* 常量,但是当按钮具有焦点时它们不适用。
-
作为一个实验,我删除了对 setRadioButtonFocusImages() 的调用。它的行为与我不使用不推荐使用的类时的行为完全相同,但定义了四个 radio* 常量。
-
如果你有常量,那么你需要定义所有常量:
radioSelectedImage,radioSelectedFocusImage,radioUnselectedImage,radioUnselectedFocusImage,radioSelectedDisImage,radioSelectedDisFocusImage,radioUnselectedDisImage,radioUnselectedDisFocusImage. -
谢谢。内部带有“Focus”的四个常量没有记录在手册的“高级主题”部分中,也不是资源编辑器提供的选择。添加它们可能是个好主意。他们工作得很好。我能够删除已弃用的代码。
标签: codenameone