From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001
From: Sven Eisenhauer
+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.
+
+
+
+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.
+
+
+
+
+
+
+ Titel
+ Inhalt
+ Suchen
+ Index
+ DOC
+ Handbuch der Java-Programmierung, 5. Auflage
+
+ <<
+ <
+ >
+ >>
+ API
+ Kapitel 25 - Farben
+
+
+
+
+
+25.4 Systemfarben
+
+
+
+
+
+
+
+
+
+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
+
+
+Listing 25.2: Verwendung von Systemfarben
+
+
+
+
+
+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
+
+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. |
+
+
|
+![]() |
+
| Titel + | Inhalt + | Suchen + | Index + | DOC + | Handbuch der Java-Programmierung, 5. Auflage, Addison +Wesley, Version 5.0.1 + |
| << + | < + | > + | >> + | API + | © 1998, 2007 Guido Krüger & Thomas +Stark, http://www.javabuch.de + |