2010-09-22 4 views
6

Gibt es eine spezielle Möglichkeit, das Aussehen einer Swing-Anwendung zu ändern, ohne dass die Anwendung jedes Mal neu gestartet werden muss, wenn der LAF vom Benutzer geändert wurde?Wie ändert man Java Swing Look and Feel ohne Neustart der Anwendung?

Ich bin auf der Suche nach einer Lösung, wo man die LAF aus einem Konfigurationsdialog auswählen kann und es direkt bei Anwendung ändert, ohne auf den Benutzer zum Neustart der Anwendung zurückgreifen zu müssen.

Zur Zeit erinnere ich mich an die ausgewählte LAF in einer Eigenschaftendatei und setze sie beim Start, bevor ein Fenster geöffnet wurde.

+3

Funktioniert das nicht? http://stackoverflow.com/questions/2655929/lookandfeel-not-changing-in-ubuntu/2656085#2656085 –

+0

@tim_yates Eigentlich manchmal nicht. Insbesondere Hörer werden in einer anderen Reihenfolge abgefeuert, was nicht wichtig ist, aber oft auch. Auch würde ich nicht absolutes Vertrauen in PL & F-Deinstallationen haben (insbesondere wenn 'UIResource' nicht verwendet wird (wie es bei einigen Klassen und Primitiven nicht möglich ist), wie kann das PL & F genau erkennen, ob der Anwendungscode ein Interesse an einem hat Komponenteneigenschaft?). –

+0

@Tom Aber es könnte funktionieren, wenn es eine nicht zu komplexe Anwendung ist, und es ist die einzige Hoffnung auf eine funktionierende Lösung außer für den vollständigen Neustart gehen, die das OP vermeiden möchte ... –

Antwort

5

Vom Java tutorial:

Als erstes müssen Sie den neuen Look setzen und das Gefühl von UIManager.setLookAndFeel Aufruf:

UIManager.setLookAndFeel(lnfName); 

Dann wird, um bestehende componentes den neuen Look reflektieren zu machen und zu fühlen, rufen Sie die SwingUtilities.updateComponentTreeUI Methode auf jedem Top-Level-Container (Dialoge, Frames ..). Sie können auch die Größe jedes übergeordneten Containers anpassen, um Änderungen an der Größe der darin enthaltenen Komponenten vorzunehmen:

Verwandte Themen