Wie können die Standard-Werte eines Look And Feel ausgelesen werden?
Java kennt die Klasse UIDefaults
, die von Hashtable
abgeleitet ist und Standardeinstellungen für
Swing-Komponenten definiert. Über die Klasse UIManager
kann hierauf zugegriffen werden. Die statische Methode UIManager.getLookAndFeelDefaults()
liefert ein Objekt der Klasse UIDefaults
, das wie
eine gängige Hashtable
ausgelesen werden kann:
Die Methode keySet()
liefert ein Set
der Schlüssel, über die iteriert werden kann. Hierzu
wird in einer Schleife mittels hasNext()
geprüft, ob das Iterator-Objekt weitere Einträge
registriert hat. Ist dies der Fall, wird der jeweils
nächste Schlüssel mittels next()
ermittelt. Über diesen wird das zugehörige Object aus
der Map der UIDefaults
ausgelesen.
Im Beispiel
werden in der Folge alle definierten Color
-Objekte
ermittelt. Dies geschieht mit Hilfe der Methode getColor()
,
die in der Klasse UIDefaults
deklariert ist.
import java.awt.Color;
import java.util.Iterator;
import java.util.Set;
import javax.swing.UIDefaults;
import javax.swing.UIManager;
public class LookAndFeelDefaults {
public static void main(String[] argv) {
UIDefaults def = UIManager.getLookAndFeelDefaults();
Set<Object> keySet = def.keySet();
Iterator<Object> iter = keySet.iterator();
while (iter.hasNext()) {
Object key = iter.next();
Object obj = def.get(key);
if (obj instanceof Color) {
Color c = def.getColor(key);
System.out.println("Key: " + key + ", Object: " + c);
}
}
}
}
Die Klasse stellt eine Reihe von Getter-Methoden zum Auslesen
der gespeicherten Objekte zur Verfügung, sodass durch
einfaches Austauschen von getColor()
andere Objekte
ermittelt werden können.
//... if (obj instanceof Border) { Border b = def.getBorder(key); System.out.println("Key: " + key + ", Object: " + b); } //...
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.