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

标签 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);
}

我在这里找不到文本绘制代码,现在我变得有点困惑,因为我更熟悉具有 UIManager 的 Swing 在这种情况下,它看起来像 UIManager.put( "ComboBox.disabledText", Color.black);我不确定是否有 SWT 的等价物...非常感谢任何帮助!

最佳答案

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

您可以使用 CCombo 代替,它更有用并且完全符合您的要求(禁用文本为黑色,颜色可以通过 setForeground 方法设置)。参见 CCombo snippet详情..

关于Java SWT 当组合框 setEnabled() 为 false 时更改文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6529037/

相关文章:

Java解析异常

java - Element.getStyle() 在 GWT 中不返回任何值

java - struts2-jquery 迭代器中对话框的唯一 ID

java - 如何改变SWT进度条的颜色?

java - ScrolledComposite 中的 SWT GridLayout 弄乱了组件的大小

java - 随机 3D 多边形的质心(obj 文件或 STL 文件)

java - 空白 ("") 作为常数 v/s 直接使用空白 ("")

java - 如何在复合 Material 上跟踪鼠标退出/进入/悬停?

java - 我可以检测 SWT 中文本字段的变化吗?

Java Swingworker 不能与 swt 一起使用吗?