OS spezifische Designparameter

Also die Frage hat net viel mit Java zu tun, aber ich wusste nicht wo ich nachfrageb sollte ;D
Also ich entwickle eine Swing Applikatikion und möchte dafür Komponenten wie einen JButton an das OS anpassen(also zB Höhe und Breite). Bei Dialogen könnte dies dann der Border sein und die Schriftart und so weiter.
Habe mal was dazu gegooglet nur ich finde gar nichts bis wenig fazu(da gibt es die Microsoft UX Guideline, aber irgendwie steht da nur die Button höhe und Breite dein…?). Ich bräuchte diese Werte auch für Mac und Linux Systemen. Falls jemand einen Link oder andere Quellen hat, wäre nett wenn ihr die Posten könntet :smiley:

[QUOTE=groggy]Also die Frage hat net viel mit Java zu tun, aber ich wusste nicht wo ich nachfrageb sollte ;D
Also ich entwickle eine Swing Applikatikion und möchte dafür Komponenten wie einen JButton an das OS anpassen(also zB Höhe und Breite). Bei Dialogen könnte dies dann der Border sein und die Schriftart und so weiter.
Habe mal was dazu gegooglet nur ich finde gar nichts bis wenig fazu(da gibt es die Microsoft UX Guideline, aber irgendwie steht da nur die Button höhe und Breite dein…?). Ich bräuchte diese Werte auch für Mac und Linux Systemen. Falls jemand einen Link oder andere Quellen hat, wäre nett wenn ihr die Posten könntet :D[/QUOTE]Dafür war das AWT damals recht gut, weil alles OS-Spezifisch aussah. Ist aber schon lange keine gute Taktik mehr, deswegen gibt es ja auch Frameworks wie Swing, SWT (mit dem das heute auch noch klappen könnte, k. P.) und JavaFX.

SWT basiert auf OS spezifischen Elementen, könnte passender sein. Bestes Beispiel ist ja Eclipse vom Aussehen her.

Aber sollte bei Swing nicht das passende Look&Fell dazu ausreichen um das Ziel zu erreichen?

[QUOTE=TheDarkRose]
Aber sollte bei Swing nicht das passende Look&Fell dazu ausreichen um das Ziel zu erreichen?[/QUOTE]

Dann sehen die Komponenten so aus. Wenn ich aber Buttons hinzufüge dann haben die auch nicht die spezifische Größe die auf dem OS üblich ist(oder überseh ich da was?). ZB haben Dialoge immer einen EmptyBorder der Fensterrahmen und Content trennt. Die Breite dieses Borders ist auf jedem OS anders. Diese Werte meinte ich.
Ein weiteres Beispiel wäre der Abstand zwischen zwei Buttons.


-> kann es sein das die Fotos an Qzalität verlieren wenn man sie hier hochlädt? Bei mir ist es 10x schärfer O.o

Was genau versuchst du da? Java2D auf Android? Na dann viel Glück, das hatte ich auch schon mal versucht. :wink:
Photos werden in der Regel durch verlustbehaftete Dateiformate wie z.B. JPEG unscharf (zumindest bei Standardeinstellungen). Bei verlustfreien Formaten wie z.B. PNG passiert das jedoch nicht.

Nop mir geht es eigentlich nur darum das UI so nah wie Möglich an das OS einzurichten. Dazu gehören auch solche Sachen wie Buttonhoehe und weite.
Hab mich bis jetzt noch nie mit Android beschäftigt(finde das irgendwie “langweilig”).

Mein Handy nimmt die Screenshots in png Format auf, daher wundert es mich auch O.o

Also eigentlich, ganz simpel gesagt, reicht es rein für die Verarbeitung der Komponenten, wenn man das systemeigenen PLAF nimmt UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); Das sind leider nicht 100% angepasste PLAFs, das sieht man an bestimmten Stellen, wenn man genau hinschaut. Sonst merkt man aber nichts und es sieht so aus, wie das restliche System. Die PreferredSize von z.B. Buttons ist auch richtig gesetzt (zumindest die Höhe). Um diese nutzen zu können, muss man aber eben auch die passenden LayoutManager verwenden :wink: Die Anordnung und die Abstände etc. musst du natürlich selbst irgendwie hinbiegen, da die LayoutManager nicht an das System angepasst sind, sondern eigene Standard-GAPs verwenden. Da muss man also an der Schraube drehen, bis es passt. Falls du dein System abklappern möchtest und alle Komponenten überprüfen, dann kannst du das Tool Au3Info von AutoIt (eine Scriptsprache) verwenden, das liefert dir dann alle diese Daten.

Allerdings … Hast du zu viel Freizeit? Das für jedes System und dann noch in verschiedenen Versionen und eventuell unter unterschiedlichen Destops (Linux/Unix → Gnome2/3, KDE, LXDE, Xfce, OpenBox, e3, …) machen zu wollen ist Selbstmord …

Eigentlich nur windows und mac… Zu Linux finde ich rein gar nichts :smiley:
Und ja irgendwie schon :smiley:

siehst Du - ich mache es mir da einfach. Ich aktiviere als erstes im Nimbus. Wenn das unter J6 nicht dargestellt wird -> Pech (für mich oder den Nutzer ^^)

Auch ne Möglichekit ^^ aber wer hat den noch < Java6 drin?

Java 6 ist auch noch keine Garantie für Nimbus. Nimbus kam bei Java6 hinzu, aber erst nach eine bestimmten Update, das ich gerade nicht im Kopf habe. Also auch wer eine alte Java6 Version hat, könnte Nimbus nicht nutzen. Und ich meine bei einem anderen Update hat sich das Package geändert, bin mir aber nicht sicher.

Und wer Java5 und kleiner nutzt? Naja, nicht unbedingt deine Zielgruppe vielleicht, aber viele Firmen :wink:

Wieso benutzen Firmen so alte jre’s? Es ist soch viel sinnvoller mittels eibem neuen JDK zu entwickeln

Weil oft wichtige SW auf dem alten Release läuft, auf diesem ist es getestet und „freigegeben“.

Bei einem Update müsste man oft viele Prüfverfahren nochmals durchziehen, das kostet Zeit und das Risiko das danach etwas nciht mehr funktioniert ist immer noch da.
Dagegen sieht das Argument des Entwicklers „Aber mit Java 7 ist es viel angenehmer zu Entwickeln, da gibt es 5 neue Features…“ oft etwas schwach aus…

Vorgaben, Richtlinien, Admins haben neuere Versionen nicht freigegeben, alte Software, Updates bedeuten Aufwand, never change a running system, … Die Liste geht noch ewig weiter. Entscheidend ist nicht das Warum, sondern dass es so ist.

EDIT:
Das sieht man auch daran, dass diverese Software noch mit min. Java6-Kompatibiltät ausgeliefert wird, viele sogar noch mit Java5 und einige, besonders ältere Libs bzw. stark verbreitete Libs, sind sogar noch zu Java 1.4 kompatibel und wahren diese absichtlich (Log4J ist z.B. sogar noch zu Java 1.3 kompatibel, wie es scheint). Auch Entwickler arbeiten nicht immer mit der neusten Version und es kann dauern, bis man die Freigabe bekommt. Der Betrieb von einem Freund hat z.B. erst vor einigen Monaten die Freigabe für das Entwicklerteam für Java5 erteilt.

Ach du scheiße… Aber ich meine mit fünf ist ja noch ok, da gibt es schon Generics was einwm viel Arbeit abnehmen kann. Vieles kam in Java6 und Java7 auch nicht dazu…

mein Kunde - das Build-Script ist auf Java 6 festgenagelt. Ich muss da nochmal schauen, hatte da letzten das Applet mit Nimbus gesehen. Weis jetzt aber nicht ob der Rechner von deren IT betreut wurde oder ob die den in Eigenregie da hingestellt haben (quasi J7 selber installiert).

Sop, also NimbusLookAndFeel ist erst ab Java6u10 dabei. Da war dieser noch unter com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel, jetzt findet man ihn aber unter javax.swing.plaf.nimbus.NimbusLookAndFeel. Ich weiß jetzt aber nicht, wann der verschoben wurde, vielleicht finde ich noch was.

dann waren meine Erinnerungen doch richtig das der schon bei 6 mit drinnen war. Aber unterm Strich ist es nicht wichtig das das Style unter 6 funktioniert. Eigentlich es es mir sogar egal.

Ist zwar Offtopic, aber sich auf niedere Java-Versionen einzuschiessen oder gar festzunalgeln zeugt nicht gerade von einer soliden Programmstruktur, schon gar nicht in Zeiten, wo Java immer wieder in die Bredullie gerät unsicher zu sein. Wurden da Pakete verwendet, die man eigentlich nicht verwenden sollte (z.B. sun.java.*)? Da besteht meines Erachtens akuter Handlungsbedarf, nachzuschauen, ob man die alte SW nicht migrieren kann.

Ich verwende das systemeigene PLAF. Das MetalLAF kann man keinem antun, Nimbus ist in meinen Augen eigentlich recht chick, aber das sehen eben nicht alle so und einige Komponenten sehen doch etwas ungewöhnlich oder ungewohnt aus, was auf manche vielleicht eine leicht abschreckende Wirkung haben könnte. Ursprünglich sollte für Java7 Nimbus eigentlich das neue Default-LAF sein, wurde dann aber doch nicht gemacht, um auch eine optische Kompatibilität zu älteren Versionen zu gewährleisten. Aber wer Lust hat, kann für sein System dennoch das Default-LAF umstellen: Nimbus Look and Feel (The Java™ Tutorials > Creating a GUI With Swing > Modifying the Look and Feel) Hab ich eine Zeit lang auch gemacht gehabt, hat aber die eine oder andere Anwendung völlig zerschossen, weil die Entwickler mit null-Layout gearbeitet haben und andere Scherze, sodass das einfach nur grausam war. Also ist mit Vorsicht zu genießen.

EDIT:

Seh ich eigentlich ähnlich, aber den Luxus kann sich nicht jeder leisten :wink: Kommt drauf an, was für Möglichkeiten man hat. Es soll ja auch böse Manager geben :wink: Mein Entwicklungsleiter hat mir z.B. erzählt, dass in einem anderen Betrieb, wo er gearbeitet hat, es die Regelung gab, dass absolut nichts, aber auch gar nichts gemacht werden darf, wenn es keinen Auftrag vom Kunden gab, der diese Änderung explizit gefordert hat. Das heißt auch Refactorings während Anpassungen oder Erweiterungen durften nicht durchgeführt werden, wurde vom Management nicht zugelassen. Er sagte mir, dass die Codebasis dadurch irgendwann einen Zustand erreicht hatte, wo absolut nichts mehr ging, die Software war im Grunde tot, da nicht mehr wartbar. Also da wird eine Migration mit Sicherheit nicht stattfinden :wink: