【发布时间】:2011-01-21 15:35:58
【问题描述】:
我禁用 org.eclipse.ui.forms.widgets.Hyperlink 控件,只调用 hyperLink.setEnabled(false)。
但是在那之后链接看起来不像是禁用控制。链接没有变灰(但我当然不能点击)。
问题是:为什么链接没有变灰,我应该怎么做才能使禁用的链接变灰?
【问题讨论】:
标签: eclipse swt eclipse-rcp eclipse-plugin
我禁用 org.eclipse.ui.forms.widgets.Hyperlink 控件,只调用 hyperLink.setEnabled(false)。
但是在那之后链接看起来不像是禁用控制。链接没有变灰(但我当然不能点击)。
问题是:为什么链接没有变灰,我应该怎么做才能使禁用的链接变灰?
【问题讨论】:
标签: eclipse swt eclipse-rcp eclipse-plugin
您是否尝试过明确设置灰色前景?
您可以使用以下辅助方法:
public static void setEnabled(Link link, boolean enable){
if(link.isEnabled()!=enable){
if(enable)
link.setForeground(null); // resets to system's default color
else
link.setForeground(link.getDisplay().getSystemColor(SWT.COLOR_GRAY));
link.setEnabled(enable);
}
}
【讨论】:
只需扩展超链接并设置默认颜色。或者,如果接口不是太大,您可以创建一个复合委托并转发接口 - 这可能更可取。
【讨论】:
请注意,除了Santosh 的answer,使用Eclipse 4.3 M6,您可以更轻松地恢复默认颜色,因为您现在拥有:
添加了一个新常量 (SWT_COLOR_LINK_FOREGROUND),它将在所有平台上返回超链接的本机颜色。
【讨论】: