Dans l'une de ma classe, j'ai le code suivant:Obtenez des couleurs par défaut du système à partir de fils non Ui
private static final Color GREEN = new Color(null, 0, 255, 0);
Je sais la classe Display fournit la méthode suivante:
Display.getSystemColor(int id)
pour revenir couleurs système "par défaut" au lieu d'instancier de nouvelles couleurs. Quelle est la meilleure solution pour obtenir une instance Display dans le contexte du code statique appelé dans un thread non Ui?
Vous pouvez obtenir l'affichage, mais vous ne pouvez pas émettre d'appels liés à l'interface utilisateur en dehors de la bande de roulement de l'interface utilisateur, y compris getSystemColor. Si cela réussit, cela signifie que vous êtes sur le thread de l'interface utilisateur. S'il peut y avoir un cas où vous n'êtes pas dans le fil de l'interface utilisateur, vous devez vous protéger comme indiqué dans ma réponse. Si cela peut fonctionner sur votre machine et échouer sur un autre. – zvikico
Oui, vous avez raison. J'utilise ma réponse pour obtenir un affichage, puis j'y exécute syncExec. +1 pour votre réponse –