【问题标题】:Why is a disabled SWT link not grayed out?为什么禁用的 SWT 链接没有变灰?
【发布时间】:2011-01-21 15:35:58
【问题描述】:

我禁用 org.eclipse.ui.forms.widgets.Hyperlink 控件,只调用 hyperLink.setEnabled(false)

但是在那之后链接看起来不像是禁用控制。链接没有变灰(但我当然不能点击)。

问题是:为什么链接没有变灰,我应该怎么做才能使禁用的链接变灰?

【问题讨论】:

    标签: eclipse swt eclipse-rcp eclipse-plugin


    【解决方案1】:

    您是否尝试过明确设置灰色前景?

    您可以使用以下辅助方法:

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

    【讨论】:

    • 刚刚试过。这行得通。但是现在我需要重新设置颜色,如何获得超链接的默认颜色? :) 我不想要求控制返回它的前景色并存储它——对于我们应该免费拥有的这种东西,这将是一个复杂的解决方案。也许我可以说 Eclipse 以某种方式使用“灰色”作为禁用超链接的前景?
    • 这看起来不错,但对我不起作用。在我的日食中,启用链接的默认颜色是“深蓝色”,当您将鼠标悬停在“浅蓝色”时。但是,如果我将前景设置为“null”,那么当您将鼠标悬停在上方时,链接将变为黑色和“浅蓝色”。
    【解决方案2】:

    只需扩展超链接并设置默认颜色。或者,如果接口不是太大,您可以创建一个复合委托并转发接口 - 这可能更可取。

    【讨论】:

      【解决方案3】:

      请注意,除了Santoshanswer,使用Eclipse 4.3 M6,您可以更轻松地恢复默认颜色,因为您现在拥有:

      添加了一个新常量 (SWT_COLOR_LINK_FOREGROUND),它将在所有平台上返回超链接的本机颜色。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-16
        • 1970-01-01
        • 2020-01-06
        • 1970-01-01
        • 1970-01-01
        • 2021-05-19
        • 2020-02-14
        • 2014-08-10
        相关资源
        最近更新 更多