1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

[Java]Erfahrung mit Swing L&F??

Dieses Thema im Forum "OS X-Developer" wurde erstellt von FloydThreepwood, 30.03.06.

  1. FloydThreepwood

    FloydThreepwood Stechapfel

    Dabei seit:
    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
     
  2. MatzeLoCal

    MatzeLoCal Rheinischer Bohnapfel

    Dabei seit:
    05.01.04
    Beiträge:
    2.421
    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 ....
     
    #2 MatzeLoCal, 30.03.06
    Zuletzt bearbeitet: 30.03.06
    MACRASSI gefällt das.
  3. FloydThreepwood

    FloydThreepwood Stechapfel

    Dabei seit:
    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.
     
  4. MatzeLoCal

    MatzeLoCal Rheinischer Bohnapfel

    Dabei seit:
    05.01.04
    Beiträge:
    2.421
    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.
     
  5. svn

    svn Prinzenapfel

    Dabei seit:
    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
     
  6. MatzeLoCal

    MatzeLoCal Rheinischer Bohnapfel

    Dabei seit:
    05.01.04
    Beiträge:
    2.421
    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?
     
  7. FloydThreepwood

    FloydThreepwood Stechapfel

    Dabei seit:
    19.01.06
    Beiträge:
    161
    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
     
  8. MatzeLoCal

    MatzeLoCal Rheinischer Bohnapfel

    Dabei seit:
    05.01.04
    Beiträge:
    2.421

    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
     
  9. slayercon

    slayercon Meraner

    Dabei seit:
    17.01.05
    Beiträge:
    231
    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.
     
  10. FloydThreepwood

    FloydThreepwood Stechapfel

    Dabei seit:
    19.01.06
    Beiträge:
    161
    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.
     
  11. MatzeLoCal

    MatzeLoCal Rheinischer Bohnapfel

    Dabei seit:
    05.01.04
    Beiträge:
    2.421
    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 ...
     
  12. FloydThreepwood

    FloydThreepwood Stechapfel

    Dabei seit:
    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
     
  13. slayercon

    slayercon Meraner

    Dabei seit:
    17.01.05
    Beiträge:
    231
    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
     
  14. MatzeLoCal

    MatzeLoCal Rheinischer Bohnapfel

    Dabei seit:
    05.01.04
    Beiträge:
    2.421
    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 :(
     

Diese Seite empfehlen