• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

[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
 

MatzeLoCal

Rheinischer Bohnapfel
Registriert
05.01.04
Beiträge
2.422
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

FloydThreepwood

Stechapfel
Registriert
19.01.06
Beiträge
161
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.
 

MatzeLoCal

Rheinischer Bohnapfel
Registriert
05.01.04
Beiträge
2.422
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.
 

svn

Prinzenapfel
Registriert
20.01.06
Beiträge
553
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
 

MatzeLoCal

Rheinischer Bohnapfel
Registriert
05.01.04
Beiträge
2.422
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?
 

FloydThreepwood

Stechapfel
Registriert
19.01.06
Beiträge
161
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
 

MatzeLoCal

Rheinischer Bohnapfel
Registriert
05.01.04
Beiträge
2.422
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
 

slayercon

Meraner
Registriert
17.01.05
Beiträge
231
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.
 

FloydThreepwood

Stechapfel
Registriert
19.01.06
Beiträge
161
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.
 

MatzeLoCal

Rheinischer Bohnapfel
Registriert
05.01.04
Beiträge
2.422
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 ...
 

FloydThreepwood

Stechapfel
Registriert
19.01.06
Beiträge
161
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
 

slayercon

Meraner
Registriert
17.01.05
Beiträge
231
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
 

MatzeLoCal

Rheinischer Bohnapfel
Registriert
05.01.04
Beiträge
2.422
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 :(