2008-09-08 13 views
51

Das ist ziemlich einfach, ich komme aus einem Swing/Awt-Hintergrund.Einstellen der Farben in SWT

Ich frage mich nur, was der richtige Weg ist, um die Hintergrundfarbe für ein SWT-Widget zu setzen?

Ich habe versucht:

widget.setBackground(); 

Außer ich habe keine Ahnung, wie die Farbe Objekt in SWT zu schaffen?

Antwort

52

eine Farbe zu erstellen, versuchen Sie dies:

Device device = Display.getCurrent(); 
Color red = new Color (device, 255, 0, 0); 
+0

Das hat funktioniert. Danke, dein der Mann. Ich konnte einfach nicht herausfinden, woher ich das aktuelle Gerät bekommen könnte. –

+22

Vergiss nicht, diese Farbe zu entsorgen! Andernfalls werden native Ressourcen verloren gehen. – Eddie

10

, dass Sie in SWT Denken Sie daran, alle Ressourcen explizit entsorgt werden müssen, die Sie erstellen, wenn Sie mit ihnen fertig sind. Dazu gehören Widgets, Schriftarten, Farben, Bilder, Displays, Drucker und GCs. Wenn Sie diese Ressourcen nicht verfügbar haben, erreicht Ihre Anwendung schließlich das Ressourcenlimit Ihres Betriebssystems und die Anwendung wird nicht mehr ausgeführt.

Siehe auch: SWT: Managing Operating System Resources

+1

Ich schlage vor, dass Sie dies verwenden [SWTResourceManager] (https://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/ui/SWTResourceManager.html) – Campa

72

Für Standardfarben (einschließlich gemeinsamen Farben und Standard vom Betriebssystem verwendeten Farben) Verwenden Sie Display.getSystemColor(int) und für die Farbe, die Sie in den SWT.COLOR_* konstant geben wollen.

Display display = Display.getCurrent(); 
Color blue = display.getSystemColor(SWT.COLOR_BLUE); 
Color listBackground = display.getSystemColor(SWT.COLOR_LIST_BACKGROUND); 

Beachten Sie, dass Sie diese Farben nicht entsorgen müssen, da SWT sie erstellt hat.

+3

Dies sollte Ihr Standard sein für jede Farbe, die im SWT.COLOR_ * -Satz unterstützt wird. Wie bereits erwähnt, müssen Sie nicht daran denken, die auf diese Weise erstellten Farben zu entsorgen. –

+0

'SWT.COLOR_LIST_BACKGROUND': genial. – Campa