[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[Debian]:Re: Look & Feel Frage



Hallo Jürgen.
Grundsätzlich kann das L&F mit Hilfe der Klasse UIManager umgeschaltet
werden, z. B. mit am Anfang der Klasse das import-Statement:

import javax.swing.*;

folgende Codesequenz würde die verfügbaren L&F ermitteln:

UIManager.LookAndFeelInfo[] lufs = UIManager.getInstalledLookAndFeels();

    In lufs steht dann ein Array von Instanzen der Klasse
UIManager.LookAndFeelInfo. Beachte bitte, daß die Klasse wirklich so heißt,
LookAndFeelInfo alleine genügt nicht, denn diese Klasse ist eine inneren
Klasse des UIManagers, jedoch public, also öffentlich, so daß wir sie
benutzen können.
    Die Klasse UIManager.LookAndFeelInfo enthält eine Methode getName(), mit
der der Name des L&F z. B. einem Benutzer zur Auswahl angeboten werden kann.
Sie enthält außerdem eine Methode getClassName(), mit der der Klassenname
des L&F ermittelt werden kann.
    Das Ergebnis von getClassName() kannst Du nun der Methode

try {
UIManager.setLookAndFeel( klassenname );
} catch( Exception e ) {
System.out.println( "Das Setzen des L&F schlug fehl" );
}

übergeben und damit das L&F setzen. Hier ist zu beachten, daß jede Menge
Exceptions auftreten können, die abzufangen sind.
JETZT ist das L&F für SPÄTER instantiierte Componenten aktiv, nicht jedoch
für die bereits Sichtbaren.
Aber das hast Du ja bereits.
Willst Du die bereits sichbaren Komponenten ebenfalls umschalten, so kannst
Du eine statische Utility-Methode der Klasse SwingUtilities verwenden, diese
lautet:

SwingUtilities.updateComponentTreeUI( Component c );

Diese Methode schaltet die Komponente c und alle darunter liegenden
Komponenten auf das neue L&F um. Hast Du bespielsweise einen JFrame mit dem
Namen myFrame, so kannst Du folgendes aufrufen:

SwingUtilities.updateComponentTreeUI( myFrame );

Der JFrame und sein gesamter Inhalt werden dann umgeschaltet.

Hoffendlich hilft es Dir...

MfG,
René

Jürgen Unfried schrieb in Nachricht <38862EA4.488A70CD@gmx.net>...
>Hallo,
>
>Ich habe mir ein Fenster mit einem Menüpunkt L&F erstellt, damit der
>User sein L&F einstellen kann.
>
>Es funktioniert ja auch bei allen Frames/Dialogs die ich nacher öffne,
>nur das eigentliche Fenster ändert sich nicht. Was mache ich falsch?
>
>Im Prinzip versuchte ich es folgendermaßen
>   if (actionCommand.equals("Windows") ||
>actionCommand.equals("X-Windows (Linux)") ||
>actionCommand.equals("Swing")) {
>    try {
>     if (actionCommand.equals("Windows"))     { UIManager.setLookAndFeel
>("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); }
>     if (actionCommand.equals("X-Windows (Linux)"))  {
>UIManager.setLookAndFeel
>("com.sun.java.swing.plaf.motif.MotifLookAndFeel"); }
>     if (actionCommand.equals("Swing"))      { UIManager.setLookAndFeel
>(UIManager.getCrossPlatformLookAndFeelClassName()); }
>    }
>    catch (Exception e) { System.out.println (e); }
>   }
>
>danke für Hinweise
>Jürgen
>
>


------------------------------------------------
Um sich aus der Liste auszutragen schicken Sie
bitte eine E-Mail an majordomo@jfl.de die im Body
"unsubscribe debian-user-de <deine emailadresse>"
enthaelt.
Bei Problemen bitte eine Mail an: Jan.Otto@jfl.de
------------------------------------------------
Anzahl der eingetragenen Mitglieder:     760


Reply to: