在我的课程中,我有以下代码:
private static final Color GREEN = new Color(null, 0, 255, 0);
我知道Display类提供了以下方法:
Display.getSystemColor(int id)
以返回“默认”系统颜色,而不是实例化新颜色。在非Ui线程中调用静态代码的上下文中获取Display实例的最佳解决方案是什么?
答案 0 :(得分:1)
在创建任何线程之前,在主初始化中执行所有UI信息调用。保存数据以供后续在非UI线程中使用。
答案 1 :(得分:1)
您必须使用Display.getDefault().syncExec(...)
来电。在runnable中,您可以执行Display.getDefault().getSystemColor(...)
之类的操作。为了返回值,您需要将其保存在runnable的字段中,然后从调用方法访问该字段。
由于执行时为syncExec
,请确保不要输入死锁(UI调用您尝试调用UI的服务可能会导致死锁)。
答案 2 :(得分:0)
PlatformUi.getWorkbench().getDisplay()