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

时间:2010-09-02 07:22:41

标签: java eclipse swt

在我的课程中,我有以下代码:

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

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

Display.getSystemColor(int id)

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您必须使用Display.getDefault().syncExec(...)来电。在runnable中,您可以执行Display.getDefault().getSystemColor(...)之类的操作。为了返回值,您需要将其保存在runnable的字段中,然后从调用方法访问该字段。

由于执行时为syncExec,请确保不要输入死锁(UI调用您尝试调用UI的服务可能会导致死锁)。

答案 2 :(得分:0)

PlatformUi.getWorkbench().getDisplay()