# GUI aussehen unter Windows und Linux (und Mac)



## Scruffy (21. Jul 2011)

Ich habe ein mittleres Problem mit meiner GUI: Ich habe sie in Netbeans unter Windows erstellt, sieht auch ganz toll aus. Starte ich das Programm aber unter Linux (oder Mac) sieht es schon nicht so toll aus, obwohl die LaF die gleiche ist (com.sun.java.swing.plaf.windows.WindowsLookAndFeel), und wenn ich beim Programmstart 
	
	
	
	





```
UIManager.getSystemLookAndFeelClassName()
```
 setze wird das Aussehen noch kurioser. Ist also die Plattforumunabhänigkeit nur für die Logik? Oder kann man das Aussehen auch vereinheitlichen?

Konkret werden in Panels Labels und JSpinner in einem GridBagLayout untereinander erstellt. Die Spinner bekommen eine feste Breite von 70. Alles paßt unter Windows sehr gut, nur eben bei den anderen Systemen nicht.


----------



## L-ectron-X (21. Jul 2011)

Dann hätte ich ganz gerne mal ein paar Screenshots von allen Sytemen, damit man sich das mal ansehen kann.
Ein absolut einheitliches Aussehen erhältst du nur mit dem MetalLookAndFeel bzw. 
	
	
	
	





```
UIManager.getCrossPlatformLookAndFeelClassName()
```
Ansonsten hast du schon die Unterschiede allein durch die Darstellung der Oberflächen der Betriebssysteme.


----------



## Scruffy (21. Jul 2011)

Screenshots darf ich leider nicht zeigen.

MetalLookAndFeel bzw. UIManager.getCrossPlatformLookAndFeelClassName() sieht aus wie, entschuldige bitte den Ausdruck, dahingekotzt. Ich hab noch das Nimbus LaF ausprobiert, das scheint auch bei allen (hier genannten) Plattformen gleich auszusehen, aber das einzig brauchbare Aussehen ist nun mal das Windows LaF. Es gibt also keine Möglichkeit das gleich aussehen zu lassen?

Wie kann ich dann das Netbeans unter Windows dazu überreden die GUI im Designer unter MetalLookAndFeel zu presentieren?


----------



## mvitz (21. Jul 2011)

Ich würde einfach mal frech weg behaupten, dass unter Mac und Linux das *Windows*LaF gar nich dabei ist...


----------



## L-ectron-X (21. Jul 2011)

Ganz genau, und das aus Lizenz-/Urhebergründen.
Es ginge dann nur noch, in dem du ein externes LAF deiner Wahl in dein Programm einbaust und dieses mit auslieferst.



Scruffy hat gesagt.:


> Wie kann ich dann das Netbeans unter Windows dazu überreden die GUI im Designer unter MetalLookAndFeel zu presentieren?


Netbeans IDE Blog by Tushar Joshi, Nagpur: NetBeans IDE - Look and Feel


----------



## Scruffy (21. Jul 2011)

Wenn's nicht dabei wäre würde es doch gar nicht starten unter Linux und Mac... oder sehe ich das falsch.

Danke für den Link, werd' ihn ausprobieren. Aber wenn ich das richtig verstanden habe, stellt es den Look vom kompletten Netbeans um und nicht vom GUI Builder.


----------



## Dit_ (21. Jul 2011)

wenns nicht dabei ist, setzt java das LaF das auf dem aktuellen System als Standard definiert ist. Es soll auch Exception geworfen werden. Ist dein Catch-block leer?


----------



## Scruffy (21. Jul 2011)

Nein, ich hab die Fehlermeldung einfach übersehen. Asche auf mein Haupt


----------



## Wildcard (21. Jul 2011)

Scruffy hat gesagt.:


> Ich hab noch das Nimbus LaF ausprobiert, das scheint auch bei allen (hier genannten) Plattformen gleich auszusehen, aber das einzig brauchbare Aussehen ist nun mal das Windows LaF.


Hmm, das Gtk und das Mac Look and Feel sind ziemlich nahe am Original. Wenn der das nicht gefällt ist das Geschmacksache, die User dieses Systems haben sich jedenfalls bewusst dafür entschieden.
Motif und Metal sind allerdings wirklich unzumutbar.


----------



## Ebenius (21. Jul 2011)

Anmerkung am Rande: Feste Breiten von Komponenten sind in mit Vorsicht zu genießen. Verschiedene Desktopsysteme unterscheiden sich nicht nur durch unterschiedliche Hersteller. Oft sind zum Beispiel die Schriftarten und -größen anders und die GUI sieht auf einem Windows super aus und auf einem anderen passt alles hinten und vorne nicht.

Ebenius


----------



## rooonny (24. Jun 2014)

Ebenius hat gesagt.:


> Anmerkung am Rande: Feste Breiten von Komponenten sind in mit Vorsicht zu genießen. Verschiedene Desktopsysteme unterscheiden sich nicht nur durch unterschiedliche Hersteller. Oft sind zum Beispiel die Schriftarten und -größen anders und die GUI sieht auf einem Windows super aus und auf einem anderen passt alles hinten und vorne nicht.
> 
> Ebenius




GENAU das Problem habe ich jetzt auch! Ich habe mein Programm jetzt endlich fertig und hatte es auf einem FullHD-Bildschirm programmiert und dann wollte ich natürlich auf einem anderen PC (normaler VGA Bildschirm) anwenden nur leider sehe ich jetzt nicht einmal die Hälfte davon... Jetzt kann ich das ganze GUI nochmal machen! Hab übrigens das null-Layout verwendet, glaube das war ein Fehler xD

Da Ronny


----------



## Thallius (24. Jun 2014)

Weitere Anmerkung:

Ich als MAC User empfinde das WindowsL&F nicht als "einzig Brachbar". Ich möchte ja gar kein Windows L&F haben. Denk da mal drüber nach.

Gruß

Claus


----------



## Tobse (24. Jun 2014)

Ich verstehe das Problem nicht so recht... ich verwende zu beginn des GUI-Codes generell

```
try
{
    javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());
}
catch (Exception ignored) {} // Fallback auf das Metal LAF
```

Und wenn man damit - wie von Ebenius gesagt - keine fixen Werte vergibt sondern (sei es im GUI-Builder oder per Hand) die Layouts sachgerecht einstellt (also keine Hacks nutzt etc) ist die fertige GUI nurnoch an Nuancen von einer nativen zu unterscheiden.

EDIT:

Achja,



Thallius hat gesagt.:


> Weitere Anmerkung:
> 
> Ich als MAC User empfinde das WindowsL&F nicht als "einzig Brachbar". Ich möchte ja gar kein Windows L&F haben. Denk da mal drüber nach.
> 
> ...



mir geht das als Linux nutzer ebenfalls so. Wenn ich auf Ubuntu oder Mint arbeite möchte ich nicht an Windoof erinnert werden und mich auch nicht beim Wechseln des Fensters an eine andere GUI gewöhnen müssen.


----------



## rooonny (24. Jun 2014)

Mir geht es ja eigentlich nicht um das andere aussehen. Aber bei mir ist es zum Beispiel so, wenn ich mein Programm auf Linux tu, dann sind meine Choice-Felder doppelt so hoch wie in Windows.

Aber ich bin da noch Anfänger und irgendwann kriegt man das schon hin 

Da Ronny


----------

