15.29 Das Java-Look&Feel
Das Aussehen der Komponenten lässt sich frei bestimmen und erzeugt so bei jedem Benutzer auf seiner Architektur die Illusion, es wäre eine plattformabhängige Applikation. Das Programm gliedert sich hinsichtlich des Aussehens in die anderen Programme ein und fällt nicht als Fremdling auf. Standardmäßig begegnet uns das Look&Feel mit dem Namen »Metal« (Java-L&F genannt). Auch in unseren Beispielen sind überall Bildschirmabzüge von diesem L&F zu sehen.
Das L&F von Applikationen lässt sich zur Laufzeit ändern. Dazu müssen wir nur eine statische Methode der Klasse UIManagers aufrufen, die sich um das Aussehen der Programme kümmert. Hier ist es die spezielle Methode setLookAndFeel(), die als Parameter eine Klasse erwartet. Verschiedene Methoden sind vordefiniert, mit denen wir das Java-eigene L&F und das System-L&F einstellen können. Da Benutzer von Java-Programmen im Allgemeinen eine Systemoberfläche erwarten, sollten wir das Java-L&F nach dem Erzeugen des Fensters umschalten.
public class UIManager
implements Serializable
|
|
static LookAndFeel getLookAndFeel()
Gibt das aktuelle L&F zurück. |
|
static String getSystemLookAndFeelClassName()
Gibt das aktuelle L&F zurück. |
|
static String getCrossPlatformLookAndFeelClassName()
Liefert den Namen der Klassen für das System-L&F. |
|
static void setLookAndFeel( String className )
throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException
Setzt ein neues L&F. |
Die folgenden Zeilen zeigen, wie sich das Aussehen der Oberfläche durch die Methode setLookAndFeel() ändern lässt. Der folgende Programmblock ändert das Aussehen einer Oberfläche so, wie es das System vorgibt. Die Programme sehen dann aus wie AWT-Programme.
static void setNativeLookAndFeel()
{
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName() );
} catch( Exception e ) { e.printStackTrace(); }
}
Die nächste Zeile erzeugt das plattformunabhängige Java-L&F:
UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName() );
Plattformabhängiges Java-L&F muss als Klasse eingebunden werden, die Motif-Oberfläche etwa mit folgender Zeile:
UIManager.setLookAndFeel( "com.sun.java.swing.plaf.motif.MotifLookAndFeel" );
Einige spezielle L&F sind nicht auf jeder Architektur erlaubt. So verbietet Apple ihr eigenes L&F auf Plattformen anderer Hersteller.1 Dennoch lässt sich das Aqua-L&F installieren, in den Pfad integrieren und dann als com.apple.mrj.swing.MacLookAndFeel einbinden. Weitere Infos dazu bietet die Web-Seite http://www.ing.unitn.it/~luttero/javaonMac/.
Listing 15.42 LookAndFeel.java
import javax.swing.*;
public class LookAndFeel
{
public static void main( String args[] ) throws Exception
{
//UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName() );
//UIManager.setLookAndFeel( "javax.swing.plaf.metal.MetalLookAndFeel" );
//UIManager.setLookAndFeel( "com.l2fprod.gui.plaf.skin.SkinLookAndFeel" );
//UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName() );
JFrame frame = new JFrame();
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.getContentPane().add( new JButton( "Ask Dr. Bob" ) );
frame.pack();
frame.show();
}
}
1 Apple betrachtete die Windows-Version 2.1 als Look-And-Feel-Clone und verklagte Microsoft ab 1988 wegen Urheberrechtsverletzungen auf eine Summe von über fünf Milliarden US-Dollar. Letztendlich bekam Apple aber nichts; das Verfahren wurde 1997 eingestellt. 1989 klagte Xerox gegen Apple und beanspruchte das Urheberrecht an grafischen Oberflächen für sich.
|