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, als ob es eine plattformabhängige Applikation wäre. 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.
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. Die Funktion ist sehr praktisch, da setLookAndFeel() einige Exceptions erzeugen kann:
static void setNativeLookAndFeel()
{
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName() );
} catch( Exception e ) { }
}
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 Webseite http://www.ing.unitn.it/~luttero/javaonMac/.
Listing 15.41
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.
|