Java SWT当组合框setEnabled()为false时更改文本颜色

时间:2011-06-30 01:18:45

标签: java swt

当我在组合框上使用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 ...非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

禁用组件的颜色是依赖于系统的一种颜色,因此无法更改颜色。

您可以使用CCombo代替它,它更加实用且完全符合您的要求(禁用文本的黑色,并且可以通过setForeground方法设置颜色)。有关详细信息,请参阅CCombo snippet