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.
标签:swt,java 来源: https://codeday.me/bug/20191208/2089870.html