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

当我在组合框上使用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);
}

我在这里找不到文本绘画代码,现在我变得有些困惑,因为我对带有UIManager的Swing更加熟悉
在这种情况下,它将类似于UIManager.put(“ ComboBox.disabledText”,Color.black);我不确定是否有与SWT相当的产品……任何帮助将不胜感激!

解决方法:

禁用组件的颜色是取决于系统的事情之一,因此无法更改颜色.

您可以改用CCombo,它更加有用并且完全符合您的要求(禁用时,文本为黑色,可以通过setForeground方法设置颜色).有关详细信息,请参见CCombo snippet.

上一篇:java-jface的ComboViewer遇到困难,需要帮助


下一篇:在drawable目录下的文件中添加一张图片