Kann ich zwei unterschiedliche Aussehen und fühlt sich in der gleichen Swing-Anwendung?
-
22-07-2019 - |
Frage
Ich bin mit dem Flamingo Band und die Substanz Office 2007 Look and Feel.
Natürlich jetzt alle Kontrolle diesen Look and Feel, auch solche auf Dialogfelder.
Was ich will, ist so etwas wie in Office 2007, wo die Bänder ihre Office 2007-Look, aber andere Steuerelemente behalten ihre nativen Vista / XP Look.
Ist es möglich, bestimmte Kontrollen einen anderen Blick zuweisen und fühlen? Vielleicht mit einer Art von Verkettungs oder einen Proxy-Look and Feel?
Lösung
ich gerade entdeckt: Seit Substance 5.0 die SKIN_PROPERTY zur Verfügung.
Es ermöglicht verschiedene Skin zu verschiedenen JRootPanes
Zuordnung (d JDialog
, JFrame
, JInternalFrame
)
Ein kleiner Trick: Ich JInternalFrame
außer Kraft setzen die zusätzliche Grenze und den Titel Scheibe zu entfernen, so dass es wie eine randlose Platte aussieht. Auf diese Weise ist es möglich, den Eindruck zu erwecken, dass verschiedene Teile eines Formulars / Dialog haben verschiedene Looks.
Andere Tipps
Hier ist eine Bibliothek, die automatisch das Aussehen und das Gefühl wird sich ändern. Ich bin nicht sicher, ob es dies für jede Komponente in einer anderen Art und Weise getan werden, aber Sie sollten einen Blick darauf werfen. pbjar.org
Dieses Buch sollte nützlich sein, wenn Sie tief in Aussehen zu gehen und fühlen / java-Look-and-Feel-Design-Richtlinien-Sekunden-Ausgabe
Ich würde mich freuen, einige Code Beispiel, um zu sehen, wenn jemand es schreiben kann, zu erhalten, fühlen Sie sich frei zu starten.
EDIT:
In diesem Forum-Thread Fädeln ich die folgende Beschreibung
Schaukel verwendet einen Look & Feel (a PLAF). PLAFs nicht auf einem pro-JFrame angebracht Niveau. Sie werden auf einem pro-VM angebracht Niveau. Es ist fast unmöglich zu mischen PLAFs innerhalb einer Anwendung. ich habe gesehen ein paar Versuche, die alle gescheitert.
Schaukel leider tut viel „psuedo-global“ die Dinge hinter den Kulissen. AFAIK, der einzige Weg, es konsequent zu tun, ist das private AppContext
API zu verwenden. Jede AppContext
verfügt über einen eigenen Event Dispatch Thread und anderes "psuedo-Globals".