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