• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

[Java]Erfahrung mit Swing L&F??

FloydThreepwood

Stechapfel
Registriert
19.01.06
Beiträge
161
Hi, ganz offensichtlich nutzt Java unter OSX ein Aqua Look & Feel. Nun ist dies aber einer Windows monopolisierten Welt gar nicht so praktisch. Daher habe ich 2 Fragen:

1. Gibt es eine möglichkeiit das Standard L&F von Sun zu benutzen (das aussehen bei Linux und Windows einschaltet)? Ich möchte schleißlich meine Tests grßteilig auf dem Mac machen.

2. Da es im Normalfall ja nun sehr Häßlich ausschaut, würde mich interessieren ob hier Leute rumstratzen, die bereits ein eigenes L&F geschrieben haben oder ein Tutorial kennen. Die Java Docs sind da eher wenig hilfreich. Die reine Klassendoku ist eher verschleiernd als erhellend.

Und eine Alternative wie von einer Component ableiten und Paint überlagern um eigene Komponenten zu schreiben ist für mich auch nicht die beste Idee.

Ist zwar recht speziell, aber vieleicht kann mir ja jemand helfen...

cu ft
 
Code:
import javax.swing.UIManager;

String lookAndFeelClassForSwing = "javax.swing.plaf.metal.MetalLookAndFeel"; 
String lookAndFeelClassForMotif = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
String lookAndFeelClassForWindows = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";


UIManager.setLookAndFeel(lookAndFeelClassFor...);

Nachdem Du das Look&Feel gesetzt hast, musst Du aber noch die Oberfläche neu laden. Natürlich kannst du das L&F auch laden bevor Du die erste Swing-Komponente lädst... ich mach das meistens in einer "Loader"-Klasse, mit so manchem anderen Rotz zusammen.

Windows-Oberfläche für Mac und Mac-Oberfläche für Windows wirst Du aber nicht bekommen, zu mindest nicht über den UIManager. Sun grenzt das aus, da auf den Designs Copyrights liegen. Es gibt aber ThemeManager die dir das machen.

[EDIT]: Wenn Du L&F was "eigenes" willst, dann schau mal hier ....
 
Zuletzt bearbeitet:
  • Like
Reaktionen: MACRASSI
Danke für die schnelle Antwort.

Ich habe in der Tat vor eine EIGENES L&F zu entwickeln. Es soll aber schon mittels der Java Klassen zustandekommen, also über den UI Manager laufen. Es steht überall dummerweise nur, dass es geht nicht wie! Wenn da wer ein Tutorial kennt oder weiterführende Informationen würd ich mich über ein Post freuen!

Danke schonmal.
 
Wenn Du das wirklich willst, dann quäle mal die Suchmaschine deines Vertrauens nach den Stichworten Java Custom Component.

Aber vll erfüllt dir das hier schon deine Wünsche.
 
Nutze einfach kein L&F, dann nimmt Java defaultmässig das System L&F
dh. unter Mac = Aqua
unter Windows = blau mit rotem X
unter Linux = naja was man halt hat Gnome oder KDE
 
Nit ganz, nur unter OS X wird nicht das "Metal"-Skin standardmäßig geladen.

Unter Win und z.B. FreeBSD wird erstmal Metal geladen. Zumindest war das mit Java 1.4 unter Win2000 und FreeBSD 5.x so...

Warum funzen die Thread-Abos bei mir nicht mehr?
 
svn schrieb:
unter Windows = blau mit rotem X

schön wärs, wenn es auch nur einer halbwegs aktuellen Windows95 Anwendung ähneln würde... Aber Windows Swing sieht grausamer aus als ein schlechtes X11 Programm auf dem Mac! Mit Aqua wär das alles ja kein Problem, aber Windows und Swing passt irgendwie nicht.

Ich überlege allerdings doch wieder ob nicht überschriebene Paint Methoden reichen...

cu ft
 
FloydThreepwood schrieb:
schön wärs, wenn es auch nur einer halbwegs aktuellen Windows95 Anwendung ähneln würde... Aber Windows Swing sieht grausamer aus als ein schlechtes X11 Programm auf dem Mac! Mit Aqua wär das alles ja kein Problem, aber Windows und Swing passt irgendwie nicht.

Ich überlege allerdings doch wieder ob nicht überschriebene Paint Methoden reichen...

cu ft


Damit wäre ich "vorsichtig" .. Java kann da sehr unperformant werden. Schau dir mal den skinlf-link an... da gibt es ein WebStart-Demo... du sparst dir einiges an Kopfschmerzen und kannst dich um das Wichtige kümmern :-p
 
FloydThreepwood schrieb:
schön wärs, wenn es auch nur einer halbwegs aktuellen Windows95 Anwendung ähneln würde... Aber Windows Swing sieht grausamer aus als ein schlechtes X11 Programm auf dem Mac! Mit Aqua wär das alles ja kein Problem, aber Windows und Swing passt irgendwie nicht.

Ich überlege allerdings doch wieder ob nicht überschriebene Paint Methoden reichen...

cu ft

Also so krass finde ich den Swing look auf Windows nicht ...

Local hat recht auch auf XP wird ohne UIManager standardmäßig Metal geladen.

Aber vielleicht wäre ja auch SWT die beste Lösung ist ja auch für alle Plattformen verfügbar.
 
slayercon schrieb:
Aber vielleicht wäre ja auch SWT die beste Lösung ist ja auch für alle Plattformen verfügbar.

Eher ungerne... Ich habe bereits mein Swing Programm auf dem ich die Anwendung schreiebn will. Klingt jetzt vieleicht komisch, aber es klappt wirklich sehr gut. Nur möchte ich Swing nicht opfern.

cu ft

EDIT: V.A. Sieht Java unter Windows immer wie eine leicht experimentelle Technische Anwendung aus und passt ssich nicht in das Normale Windows L&F ein. Ich hättte gerne eine Anwendung gehabt, die natürlicher wirkt.
 
Die SkinLF-Themes kannst Du ohne Änderung an deiner Anwendung nutzen. Einfach vor jeglicher GUI-Sache "laden". Jaja, ich weiss.. es nervt, dass ich das dauernd erwähne, düfte aber für dich am einfachsten sein.

SWT widerspricht für mich etwas der Pure-Java-Philosophie....

Was natürlich auch bestens funktioniert ist, dass Du zu Beginn deines Programms das OS abfragst System.getProperty() und danach das entsprechende LookAndFeel das mit Swing kommt lädst... Ich glaub ab Java(1.)5 kommt auch eins XPiges LnF mit. Aber Java5 hab ich nicht so viel zutun... auf der iSeries is 1.4 Standard ...
 
Mir ging es weniger um eine Java Custom Component sondern mehr um eine bessere Dikumentation für javax.swing.plaf.basic / multi. Aber offensichtlich ist es am besten wenn ich einfach mal rumprobiere.

cu ft
 
LoCal schrieb:
SWT widerspricht für mich etwas der Pure-Java-Philosophie....
Da hast du natürlich Recht das Freiräumen des Speichers ist für jemanden wie mich der eigentlich nur mit Java und Skriptsprachen versiert ist auch ein Klotz .. hab aber mal mit SWT experimentiert und man sollte es nicht verachten....

ich weiss nicht ob ihr das kennt aber ich werds mal testen kling ganz vernünftig....

Wahrscheinlich halt noch mehr Technologie Demo
 
Weil wir gerade beim Thema Oberflächen sind. hiermit darf ich täglich arbeiten. Sieht bei uns allerdings etwas anders aus.. Vorgänger oder so.. Aber das GUI-Zeugs ist nur der kleinere Teil meiner Arbeit :)

Achja.. die Demo will nicht nur, sie muss mit dem Firefox betrachtet werden :(