You are not logged in.

Peter

Trainee

  • "Peter" is male
  • "Peter" started this thread

Posts: 69

Date of registration: Nov 24th 2008

Location: Cologne, Germany

Occupation: Second Vice President of Distributed Junk and Trash Development

  • Send private message

1

Saturday, July 17th 2010, 2:27pm

Darstellung von Jabaco-Programmen unter verschiedenen OS

Hallo,

ich habe gestern mal ein simples Jabaco-Projekt erstellt. Einfache Form mit einer Menüzeile und einem Button in der rechten unteren Ecke.

Unter Windows sieht das Fenster eins zu eins so wie im GUI-Designer aus. Sehr gut!

Wenn ich nun ein JAR erstelle und dieses unter Ubuntu 10.04 starte bietet sich mir folgendes Bild:

Alle Schriften sind um einen nicht unerheblichen Faktor größer. Demzufolge ist der Text im Button auch nicht vollständig sichtbar. Die Menüzeile ist viel zu groß geraten.

Des weiteren ist mir aufgefallen, dass die Form sich zuerst in der rechten unteren Ecke des Bildschirms öffnet und dann sichtbar nach oben links verschoben wird. Bei manchen Programmstarts wird das Fenster allerdings in die Mitte des Bildschirms verschoben. Auch die Fensterausmaße sind nicht immer gleich. Bei ca. jedem dritten Programmstart ist die Form zudem etwas kleiner als bei den anderen Starts.

Mir ist klar, dass es wahrscheinlich immer ein paar kleine Abweichungen im Aussehen zwischen den OS geben wird. Allerdings hatte ich nicht mit so krassen Unterschieden gerechnet. Ist das irgendwie änderbar? Wenn ja, wie?

Danke im voraus & Grüße ... Peter

theuserbl

Intermediate

Posts: 436

Date of registration: Dec 20th 2008

  • Send private message

2

Sunday, July 18th 2010, 7:29pm

RE: Darstellung von Jabaco-Programmen unter verschiedenen OS

Hallo,

ich habe gestern mal ein simples Jabaco-Projekt erstellt. Einfache Form mit einer Menüzeile und einem Button in der rechten unteren Ecke.

Unter Windows sieht das Fenster eins zu eins so wie im GUI-Designer aus. Sehr gut!

Wenn ich nun ein JAR erstelle und dieses unter Ubuntu 10.04 starte bietet sich mir folgendes Bild:

Alle Schriften sind um einen nicht unerheblichen Faktor größer. Demzufolge ist der Text im Button auch nicht vollständig sichtbar. Die Menüzeile ist viel zu groß geraten.


Das liegt an unterschiedlichen Gründen:

Zum einen verwendet Jabaco für Java das SystemLookAndFeel. Das heißt, es wird immer das LookAndFeel für das jeweilige Betriebssystem verwendet. Man kann es umgehen, indem man die Jar-Datei mit
java -Dswing.systemlaf=javax.swing.plaf.metal.MetalLookAndFeel -jar JarProgramm.jar
startet.

Die Fonts sind bei jedem Betriebssystem verschieden. Das ist ein bleibendes Problem. Java verwendet mehrere LayoutManager, die die Größe von Controls/Widgets der Font-Größe anpasst. Jabaco verwendet aber keine LayoutManager, dort haben alle Controls/Widgets feste Größen.


Quoted

Des weiteren ist mir aufgefallen, dass die Form sich zuerst in der rechten unteren Ecke des Bildschirms öffnet und dann sichtbar nach oben links verschoben wird. Bei manchen Programmstarts wird das Fenster allerdings in die Mitte des Bildschirms verschoben. Auch die Fensterausmaße sind nicht immer gleich. Bei ca. jedem dritten Programmstart ist die Form zudem etwas kleiner als bei den anderen Starts.


Das ist ein Problem von Java.
Bei Java bewirkt ein setzen der Fenstergröße, daß das gesamte Fenster (mit Rahmen und allem) die entsprechende Größe hat.
Jabaco hingegen setzt die Größe des Inhalts des Rahmens. Der Rahmen ist aber auf jedem Betriebssystem unterschiedlich groß. Und auch auf einem Betriebssystem kann er schon je nach ausgewähltem Fenster-Design anders sein.
Daher öffnet Jabaco erst das Fenster in der Größe, wie es Java macht: Größe der Form = Gesamtgröße des Fensters.
Erst dann ist es möglich zu sehen, wie groß der Inhalt des Fensters ist (der Teil ohne Rahmen).
Dann berechnet Jabaco die neue Fenstergröße für Java und setzt die fenstergröße neu (so daß der Inhalt des Rahmens der Form-Größe entspricht).

Ist jetzt etwas umständlich und kompliziert von mir geschrieben, aber ich hoffe Du weißt in etwa, was ich meine.

Quoted

Mir ist klar, dass es wahrscheinlich immer ein paar kleine Abweichungen im Aussehen zwischen den OS geben wird. Allerdings hatte ich nicht mit so krassen Unterschieden gerechnet. Ist das irgendwie änderbar? Wenn ja, wie?


Wenn es bloß die Fonts und die Menüleiste betrifft: Erstelle dein eigenes Jabaco.jar !
Lösche dabei alle Zeilen wo "SystemLookAndFeel", "JabacoLookAndFeel" oder "WindowsLookAndFeel" drinsteht.

Grüße
theuserbl

Peter

Trainee

  • "Peter" is male
  • "Peter" started this thread

Posts: 69

Date of registration: Nov 24th 2008

Location: Cologne, Germany

Occupation: Second Vice President of Distributed Junk and Trash Development

  • Send private message

3

Monday, July 19th 2010, 10:16am

Hallo theuserbl,

vielen Dank für Deine ausführliche Antwort!

Quoted

Zum einen verwendet Jabaco für Java das SystemLookAndFeel. Das heißt, es wird immer das LookAndFeel für das jeweilige Betriebssystem verwendet.

würde das aber nicht bedeuten, dass Jabaco-Programme genauso aussehen sollten, wie alle anderen Programme, die ebenfalls auf diesem Betriebssystem laufen und das LookAndFeel nutzen? Wenn ich beispielsweise den Taschenrechner starte, ist dessen Menüzeile nicht so groß. Bei meinem Programm sieht es so aus, als ob ich die Bildschirmlupe angeschaltet hätte.

Hier habe ich zum besseren Verständnis einige Screenshots hochgeladen:

Darstellung unter Windows Vista

Darstellung unter Ubuntu

Nochmal unter Ubuntu. (Zum Größenvergleich mit dem Taschenrechner daneben)

Ich habe testweise mal das GUIFormExample von NetBeans erstellen lassen und sowohl unter Windows als auch unter Linux sehen beide Programme nahezu identisch aus.

Quoted

Wenn es bloß die Fonts und die Menüleiste betrifft: Erstelle dein eigenes Jabaco.jar !
Lösche dabei alle Zeilen wo "SystemLookAndFeel", "JabacoLookAndFeel" oder "WindowsLookAndFeel" drinsteht.

scheint mir ne gute Idee zu sein. Kannst Du mir nen Schubs geben, wie ich das machen kann?

Nochmals Danke & Grüße ... Peter

OlimilO

Intermediate

  • "OlimilO" is male

Posts: 277

Date of registration: Jan 18th 2009

Location: Germany

Occupation: software engineer

  • Send private message

4

Monday, July 19th 2010, 11:48am

Hallo Peter,



bitte poste Deine Versionen!

Windows Vista OK

Ubuntu version?

Java version unter unbuntu?

JAva version unter windows?



hast du Liberation-Fonts unter ubuntu installiert?



Gruß

OlimilO

Peter

Trainee

  • "Peter" is male
  • "Peter" started this thread

Posts: 69

Date of registration: Nov 24th 2008

Location: Cologne, Germany

Occupation: Second Vice President of Distributed Junk and Trash Development

  • Send private message

5

Monday, July 19th 2010, 12:58pm

Quoted from "OlimilO"

Ubuntu version?

10.04 (steht im Ursprungsposting ;) )

Quoted from "OlimilO"

Java version unter unbuntu?
JAva version unter windows?

Win: V6 Update 20
Lin: Version: 6b18-1.8-0ubuntu1 (habe ich mir vor ein paar Tagen via Software-Center herunterladen lassen)

Quoted from "OlimilO"

hast du Liberation-Fonts unter ubuntu installiert?

Zumindest nicht bewusst. Habe grade mal nachgeschaut. Im Software-Center ist liberation-ttf als 'Installiert' gekennzeichnet. Ist das gut oder schlecht?

Danke & Grüße ... Peter

theuserbl

Intermediate

Posts: 436

Date of registration: Dec 20th 2008

  • Send private message

6

Monday, July 19th 2010, 7:38pm

würde das aber nicht bedeuten, dass Jabaco-Programme genauso aussehen sollten, wie alle anderen Programme, die ebenfalls auf diesem Betriebssystem laufen und das LookAndFeel nutzen?
Ja, das bedeutet es.

Quoted

Wenn ich beispielsweise den Taschenrechner starte, ist dessen Menüzeile nicht so groß. Bei meinem Programm sieht es so aus, als ob ich die Bildschirmlupe angeschaltet hätte.
Dann ist es möglicherweise ein Java-Bug. Kann aber genauso sein, daß es mit dem Zusammenspiel mit dem WindowsLookAndFeel irgendwelche Probleme gibt. Wier sehen andere Programme mit dem GTKLookAndFeel bei Dir unter Linux aus?
Wenn Du eine normale Java-Anwendung hast, einfach mal
java -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel -jar ProgrammDateio.jar
eingeben.

Quoted

Hier habe ich zum besseren Verständnis einige Screenshots hochgeladen:

Hmm..
An den Icons in den Screenshots kann man erkennen, daß Du unter Windows Suns Java verwendest und unter Ubuntu OpenJDK.
Auch wenn OpenJDK über 95% des Java-Codes enthält, so gibt es doch immer wieder kleine Unterschiede und Bugs. Wie sieht das selbe Programm mit dem normalen Java aus?

Quoted

Quoted

Wenn es bloß die Fonts und die Menüleiste betrifft: Erstelle dein eigenes Jabaco.jar !
Lösche dabei alle Zeilen wo "SystemLookAndFeel", "JabacoLookAndFeel" oder "WindowsLookAndFeel" drinsteht.

scheint mir ne gute Idee zu sein. Kannst Du mir nen Schubs geben, wie ich das machen kann?


Den Quellcode aus dem SVN-tree downloaden, entsprechendes auskommentieren und dann kompilieren. Wie mans kompiliert hatte ich z.B. unter
Problem with the Framework
geschrieben.
Mehr Infos zum Framework stehen u.a. hier: http://www.jabaco.org/wiki/Develop_the_Jabaco_Framework
und hier: http://www.jabaco.org/framework.html

Da es jedoch wiederum recht auswändig ist, es genau zu erklären habe ich mal ein entsprechendes Jabaco.jar erstellt:
http://www.file-upload.net/download-2684045/Jabaco.jar.html

Es ist die aktuelle(!) SVN-Version, jedoch ohne WindowsLookAndFeel, SystemLookAndFeel und NativeCall/WinAPI.
Halt nur die wirklich plattformunabhängigen Dinge. Daher ist die Datei auch um einiges kleiner.

Und hier der Quellcode als gezippte Version:
http://www.file-upload.net/download-2684…co-src.zip.html

DFa sieht man, daß ich bloß einiges auskommentiert habe.

OlimilO

Intermediate

  • "OlimilO" is male

Posts: 277

Date of registration: Jan 18th 2009

Location: Germany

Occupation: software engineer

  • Send private message

7

Monday, July 19th 2010, 11:44pm

konnte die großen Schriften nicht nachvollziehen

Hi,

keine Ahnung was das jetzt beweist ... sicher noch nix:

hab folgendes versucht: hab das Jabaco-Projekt aus dem Verzeichnis

Programme\Jabaco\Samples\ControlDemo\ genommen und zum ControlSample.jar kompiliert.

Start Ubuntu 10.04 LTS, Start Terminal: Java -jar ControlSample.jar

ich konnte keine abnormalen Schriften feststellen siehe Screenshot

Gruß

OlimilO
OlimilO has attached the following image:
  • Screenshot-1.png

Peter

Trainee

  • "Peter" is male
  • "Peter" started this thread

Posts: 69

Date of registration: Nov 24th 2008

Location: Cologne, Germany

Occupation: Second Vice President of Distributed Junk and Trash Development

  • Send private message

8

Thursday, July 22nd 2010, 10:55am

RE: konnte die großen Schriften nicht nachvollziehen

Hallo OlimilO,
hallo theuserbl,

jetzt weiß ich zumindest, warum das bei mir so seltsam erscheint:

ich hielt es bis grade für nicht erwähnenswert, dass meine Linux-Installation in einer VM (VMWare-Player) läuft. Die anfängliche Auflösung habe ich von 800*600 auf 1290*960 Pixel erhöht. Und in dieser Auflösung erscheinen die Jabaco-Forms so wie oben beschrieben. Wenn ich wieder auf 800*600 zurücksetze und das JAR starte, erscheint die Form korrekt. Schalte ich zur Laufzeit des JARs wieder auf die hohe Auflösung, so bleibt die Darstellung korrekt.

Aus meiner (Linux- und Java-Newbie-) Sicht ist dieses Verhalten von Jabaco-Executables nicht korrekt. Ich lasse mich allerdings auch gerne eines Besseren belehren. :)

Danke & Grüße ... Peter

Rate this thread
WoltLab Burning Board