代码之家  ›  专栏  ›  技术社区  ›  Manuel Selva

从非UI线程获取系统默认颜色

  •  0
  • Manuel Selva  · 技术社区  · 14 年前

    在我的一个班级里,我有以下代码:

    private static final Color GREEN = new Color(null, 0, 255, 0);
    

    我知道display类提供了以下方法:

    Display.getSystemColor(int id)
    

    为了返回“默认”系统颜色而不是实例化新颜色。在非UI线程中调用静态代码的上下文中获取显示实例的最佳解决方案是什么?

    3 回复  |  直到 14 年前
        1
  •  1
  •   wallyk    14 年前

    在创建任何线程之前,执行主初始化中的所有UI信息调用。保存数据以供以后在非UI线程中使用。

        2
  •  1
  •   zvikico    14 年前

    你必须使用 Display.getDefault().syncExec(...) 打电话。在你的可运行文件中,你可以执行 Display.getDefault().getSystemColor(...) . 为了返回该值,您需要将其保存在可运行的字段中,然后从调用方法访问该字段。

    因为执行与 syncExec 请确保不要输入死锁(用户界面调用试图调用用户界面的服务可能会导致死锁)。

        3
  •  0
  •   Manuel Selva    14 年前
    PlatformUi.getWorkbench().getDisplay()