Titel   Inhalt   Suchen   Index   DOC  Handbuch der Java-Programmierung, 7. Auflage
 <<    <     >    >>   API  Kapitel 26 - Farben

26.4 Systemfarben



Um ihren Anwendungen ein einheitliches Look-and-Feel zu geben, definieren grafische Oberflächen in der Regel eine Reihe von Systemfarben. Diese können im Programm verwendet werden, um beispielsweise die Farbe des Hintergrunds oder die von Dialogelementen konsistent festzulegen.

SystemColor ist aus Color abgeleitet und unterscheidet sich von ihr vor allem durch die Fähigkeit, die Farbe dynamisch zu ändern. Dieses Feature ist auf Systemen interessant, die eine Nachricht an die Anwendung senden, wenn sich eine Systemfarbe geändert hat. Wir wollen an dieser Stelle nicht näher darauf eingehen.

Die Klasse SystemColor stellt eine Reihe von vordefinierten Farben zur Verfügung, die zu den entsprechenden Systemfarben des Desktops korrespondieren. Da SystemColor aus Color abgeleitet ist, können diese leicht anstelle eines anwendungsspezifischen Color-Objekts verwendet werden, wenn eine einheitliche Farbgebung gewünscht ist. Tabelle 26.2 gibt eine Übersicht dieser Farben (auch diese Konstanten gibt es zusätzlich in Großschrift).

Farbkonstante Bedeutung
SystemColor.desktop Hintergrundfarbe des Desktops
SystemColor.activeCaption Hintergrundfarbe für die Titelleiste von selektierten Fenstern
SystemColor.activeCaptionText Schriftfarbe für die Titelleiste von selektierten Fenstern
SystemColor.activeCaptionBorder Rahmenfarbe für die Titelleiste von selektierten Fenstern
SystemColor.inactiveCaption Hintergrundfarbe für die Titelleiste von nicht selektierten Fenstern
SystemColor.inactiveCaptionText Schriftfarbe für die Titelleiste von nicht selektierten Fenstern
SystemColor.inactiveCaptionBorder Rahmenfarbe für die Titelleiste von nicht selektierten Fenstern
SystemColor.window Hintergrundfarbe für Fenster
SystemColor.windowBorder Farbe für Fensterrahmen
SystemColor.windowText Farbe für Text im Fenster
SystemColor.menu Hintergrundfarbe für Menüs
SystemColor.menuText Textfarbe für Menüs
SystemColor.text Hintergrundfarbe für Textfelder
SystemColor.textText Textfarbe für Textfelder
SystemColor.textHighlight Hintergrundfarbe für hervorgehobenen Text
SystemColor.textHighlightText Textfarbe für hervorgehobenen Text
SystemColor.textInactiveText Textfarbe für inaktiven Text
SystemColor.control Hintergrundfarbe für Dialogelemente
SystemColor.controlText Textfarbe für Dialogelemente
SystemColor.controlHighlight Farbe für hervorgehobene Dialogelemente
SystemColor.controlLtHighlight Helle Farbe für hervorgehobene Dialogelemente
SystemColor.controlShadow Farbe für den Schatten von Dialogelementen
SystemColor.controlDkShadow Dunklere Farbe für den Schatten von Dialogelementen
SystemColor.scrollbar Hintergrundfarbe für Schieberegler
SystemColor.info Hintergrundfarbe für Hilfetext
SystemColor.infoText Textfarbe für Hilfetext

Tabelle 26.2: Liste der vordefinierten Systemfarben

Das folgende Listing zeigt ein einfaches Programm, das den Text »Tag & Nacht« in den Systemfarben für normalen und hervorgehobenen Text ausgibt. Als Fensterhintergrund wird die Systemfarbe desktop verwendet. Der Text »Tag« wird mit Hilfe der Systemfarben textText und text in normaler Textfarbe auf normalem Texthintergrund ausgegeben. Der Text »Nacht« wird dagegen mit den Systemfarben textHighlight und textHighlightText invertiert dargestellt. Das dazwischenstehende »&« wird in Blau auf normalem Hintergrund ausgegeben.

001 /* Listing2602.java */
002 
003 import java.awt.*;
004 
005 public class Listing2602
006 extends Frame
007 {
008   public static void main(String[] args)
009   {
010     Listing2602 wnd = new Listing2602();
011   }
012 
013   public Listing2602()
014   {
015     super("Systemfarben");
016     setBackground(SystemColor.desktop);
017     setSize(200,100);
018     setVisible(true);
019     addWindowListener(new WindowClosingAdapter(true));
020   }
021 
022   public void paint(Graphics g)
023   {
024     g.setFont(new Font("Serif",Font.PLAIN,36));
025     FontMetrics fm = g.getFontMetrics();
026     int sheight    = fm.getHeight();
027     int curx       = 10;
028     int cury       = getInsets().top + 10;
029     //"Tag" in normaler Textfarbe
030     int swidth  = fm.stringWidth("Tag");
031     g.setColor(SystemColor.text);
032     g.fillRect(curx,cury,swidth,sheight);
033     g.setColor(SystemColor.textText);
034     g.drawString("Tag",curx,cury+fm.getAscent());
035     //"&" in Blau auf normalem Hintergrund
036     curx += swidth + 5;
037     swidth = fm.stringWidth("&");
038     g.setColor(Color.blue);
039     g.drawString("&",curx,cury+fm.getAscent());
040     //"Nacht" in hervorgehobener Textfarbe
041     curx += swidth + 5;
042     swidth = fm.stringWidth("Nacht");
043     g.setColor(SystemColor.textHighlight);
044     g.fillRect(curx,cury,swidth,sheight);
045     g.setColor(SystemColor.textHighlightText);
046     g.drawString("Nacht",curx,cury+fm.getAscent());
047   }
048 }
Listing2602.java
Listing 26.2: Verwendung von Systemfarben

Abbildung 26.2 zeigt die Ausgabe des Programms:

Abbildung 26.2: Verwendung von Systemfarben

Ein weiteres Beispiel zur Verwendung der Systemfarben findet sich in Listing 32.16. Das zu dem Dialogelement ScrollPane vorgestellte Beispielprogramm zeigt alle Systemfarben zusammen mit ihrem Namen in einem verschiebbaren Fenster an.

 Hinweis 


 Titel   Inhalt   Suchen   Index   DOC  Handbuch der Java-Programmierung, 7. Auflage, Addison Wesley, Version 7.0
 <<    <     >    >>   API  © 1998, 2011 Guido Krüger & Heiko Hansen, http://www.javabuch.de