当我在组合框上使用setEnabled()时,(并将其设置为false)我想知道如何更改文本颜色,使其为黑色而不是灰色。我正在为自己开发软件的人发现它太难阅读,我无法找到访问文本颜色的方法。很容易修复文本组件,因为我只需要使用setEditable()而不是灰色文本颜色,但是在SWT中没有可用于组合框的setEditable()方法。
为了进一步澄清,我试图覆盖该方法,但它不会使用我的方法,而是使用下面的继承方法......
public void setEnabled (boolean enabled) {
checkWidget ();
/*
* Feature in Windows. If the receiver has focus, disabling
* the receiver causes no window to have focus. The fix is
* to assign focus to the first ancestor window that takes
* focus. If no window will take focus, set focus to the
* desktop.
*/
Control control = null;
boolean fixFocus = false;
if (!enabled) {
if (display.focusEvent != SWT.FocusOut) {
control = display.getFocusControl ();
fixFocus = isFocusAncestor (control);
}
}
enableWidget (enabled);
if (fixFocus) fixFocus (control);
}
我在这里找不到文字绘画代码,现在我变得有点困惑,因为我对Swing更熟悉UIManager 在这种情况下,它看起来像UIManager.put(“ComboBox.disabledText”,Color.black);我不确定是否有相同的SWT ...非常感谢任何帮助!
答案 0 :(得分:3)
禁用组件的颜色是依赖于系统的一种颜色,因此无法更改颜色。
您可以使用CCombo
代替它,它更加实用且完全符合您的要求(禁用文本的黑色,并且可以通过setForeground方法设置颜色)。有关详细信息,请参阅CCombo snippet。