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

25.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. Während es in früheren Versionen von Java keine Möglichkeit gab, auf Systemfarben zuzugreifen, steht diese Möglichkeit mit der Klasse SystemColor im JDK 1.1 portabel zur Verfügung.

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 25.2 gibt eine Übersicht dieser Farben.

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

Abbildung 25.2 zeigt die Ausgabe des Programms:

Abbildung 25.2: Verwendung von Systemfarben

Ein weiteres Beispiel zur Verwendung der Systemfarben findet sich in Kapitel 32. 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, 3. Auflage, Addison Wesley, Version 3.0.1
 <<    <     >    >>   API  © 1998-2003 Guido Krüger, http://www.javabuch.de