# Swing-Oberfläche wird auf einiges PCs nicht korrekt dargeste



## Chuqa (3. Sep 2008)

Hallo allerseits, 

ich habe ein sehr sonderbares Problem. Und zwar wird von meiner Anwendung die Oberflächen bei einiges PCs nicht wie gewollt dargestellt. Da fließt z.B. der Text eines JLabels in das JTextfield, welches sich gleich daneben befindet. Die Felder sind alles ausreichend dimensioniert, so dass es eigentlich nicht auftreten sollte. Ich habe auch mit mehreren verschiedenen Auflösungen, DPI-Einstellungen, usw. getestet, aber bei mir und Kollegen trat das Problem nicht auf. Es gibt nur ein paar Screenshots von Kunden, die das Problem zeigen.
Hat jemand eine Idee, woran das liegen kann, oder hat vielleicht schonmal jemand ein ähnliches Phänomen gehabt?

danke und gruss
chuqa


----------



## Verjigorm (3. Sep 2008)

Startest du die GUI mit invokeLater()?

Man hört ja immer von solchen Fehlern, wenn man dieses NICHT macht

Siehe: http://www.java-forum.org/de/viewtopic.php?t=72074&highlight=


----------



## The_S (3. Sep 2008)

Verwendest du etwa ein gargarstiges Null-Layout?


----------



## Chuqa (3. Sep 2008)

Nein die GUI wird mit setVisible(true) gestartet. Es gibt zwar mehrere invokeLater()-Methoden, die aber nur zum Anzeigen von Dialogen und Update von Statusleisten dienen.


----------



## Templon (3. Sep 2008)

Er meint Wahrscheinlich ob du dein GUI-Objekt mit invokeLater() erstellest, sprich:


```
SwingUtilities.invokeLater(new Runnable() {
  run() {
     JFrame f = new JFrame() // erstellung des GUI-Objektes 
                             // (Oder halt deine Klasse falls sie von JFrame erbt)
  }
});
```

(Oder ähnlich)

mfg Templon


----------



## The_S (3. Sep 2008)

Nein, er meint, ob z. B. dein Frame innerhalb eines invokeLater-Blocks sichtbar gemacht wurde  .

Verwendest du jetzt trotzdem ein gargarstiges Null-Layout?


----------



## Chuqa (3. Sep 2008)

Was ist denn bitte ein gargarstiges Null-Layout? 
Als Layout kommen GridBagLayouts und BorderLayouts zum Einsatz.

Nein das Frame wird nicht mit invokeLater erstellt, sondern einfach nur mit

```
JFrame f = new JFrame();
```


----------



## The_S (3. Sep 2008)

Hehe ... gargarstig = schrecklich. Und Null-Layout ist (k)ein Layout, bei dem alle Positionen und Größen absolut gesetzt werden. Bei der Verwendung von Null-Layouts kann es deshalb öffters zu solchen Verschiebungen kommen.



			
				Hobbit_im_Blutrausch hat gesagt.:
			
		

> Nein, er meint, ob z. B. dein Frame innerhalb eines invokeLater-Blocks sichtbar gemacht wurde icon_wink.gif .


----------



## Chuqa (3. Sep 2008)

Ja also wie gesagt, BorderLayouts und GridbagLayouts kommen zum Einsatz. Ein Null-Layout habe ich nicht gefunden.

Die Sache mit dem invokeLater() habe ich so verstanden, dass es dort nur ab und zu Probleme gibt, eher temporär und zufällig. Bei mir ist es ja so, dass das auf einer Art von Rechnern immer besteht und auf einer anderen irgendwie nie auftritt...


----------



## The_S (3. Sep 2008)

Auch das können Konsequenzen von einem nicht verwenden von invokeLater sein.

Ohne detaillierte Fehlerbeschreibung, Screenshots und Code ist da wohl nur schwer etwas zu sagen.


----------



## Chuqa (3. Sep 2008)

Code kann ich nicht geben, erstens wäre das viel zu viel und zweitens ist das ja Firmeneigentum.
Wie ich die Fehlerbeschreibung noch detailierte machen soll, weiß ich ehrlich gesagt nicht wirklich.
Screenshots weiß ich auch nicht, ob ich die rausgeben darf, aber ich versuche ein paar Ausschnitte von der GUI zu machen und die dann hier zur Verfügung zu stellen.


----------



## The_S (3. Sep 2008)

Du sollst ja nicht den kompletten Code posten, sondern nur relevante Ausschnitte - z. B. alles, was dein Fenster verändert, den Container, in dem sich deine Elemente befinden und wie diese angeordnet werden ...

Detaillierter: Sind es immer die selben Felder, die sich überschneiden, welches OS wird eingesetzt, welche Auflösung, ... so Sachen halt  .


----------



## Chuqa (3. Sep 2008)

Ach herje, die Stellen wo sich irgendwas verändert zu posten wird auch schon zuviel. Dem Container, in dem sich die Elemente befinden ansich ist ja schon zuviel. Wie gesagt, die Änderung Auflösung, DPI-Wert, usw. hat keinen Effekt, weder bei den Rechnern, wo das Problem existent ist, noch bei den Rechnern wo es nicht auftritt.
Hier mal 2 Screenshots. Die Erste der Fehler, der Zweite zeigt die GUI, wie sie eigentlich aussehen soll.









Beim Code versuche ich mal was zusammen zu suchen und entsprechend die unwichtige bzw. sensible Stellen zu entfernen, kann aber etwas dauern 

EDIT:
Nein sorry, ich kann absolut keinen Quelltext rausgeben, das Risiko wäre einfach zu groß. Ich bitte das zu entschuldigen...


----------



## Verjigorm (3. Sep 2008)

Hm ist vielleicht ne blödsinnige Annahme:

Benutzt du ein spezielles Font, welches nicht auf allen Rechnern standardmässig installiert ist und du auch in der Software nicht mitlieferst?

Hatte ein ähnliches Problem auchmal

edit: Wobei mir das eher nach der üblichen Null-Layout-Überlagerung aussieht, aber das hast du ja nicht benutzt, sagst du.


----------



## The_S (3. Sep 2008)

Ja, die andere (größere) Schriftart bei deinem Fehler-Screenshot ist deutlich zu erkennen.


----------



## Chuqa (3. Sep 2008)

Ja stimmt. Nur wie bekommen die anderen die Schriftart in der GUI größer? Das Herausfsetzen des DPIWertes, macht bei mir alle möglichen Schriften größer, nur nicht die innerhalb des Frames.


----------



## Chuqa (3. Sep 2008)

Ok ich konnte das Problem gerade auf einer VMWare reproduzieren. Nun heißt es die entsprechende Einstellung für den Fehler finden. Aber es ist schonmal kein Problem der Anwendung an sich, sondern es scheint an der Rechnerkonfiguration zu liegen.


----------



## The_S (3. Sep 2008)

Das ist doch schonmal was. Wenn du mehr weißt bzw. noch Probleme hast, lass es uns wissen  .


----------



## Wildcard (3. Sep 2008)

Natürlich ist es ein Problem deiner Anwendung. Das Layout geht nicht auf die Schriftgröße ein.


----------



## Chuqa (3. Sep 2008)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> Das ist doch schonmal was. Wenn du mehr weißt bzw. noch Probleme hast, lass es uns wissen  .


Probleme habe ich genug, aber nicht alle gehen euch etwas an 
Ich danke dir für deine Hilfe, es scheint doch an der DPI-Einstellung zu liegen. Allerdings ist ein Neustart zwingend notwendig um die Einstellung zu übernehmen, sonst kann Windows den neuen Wert nicht überall übernehmen.



			
				Wildcard hat gesagt.:
			
		

> Natürlich ist es ein Problem deiner Anwendung. Das Layout geht nicht auf die Schriftgröße ein.


Es ist nicht meine Anwendung, aber du hast sicherlich recht, dass die Anwendung darauf keine Rücksicht nimmt. Stellt sich mir nur die Frage, ob das die Anwendung, so wie sie zum Einsatz kommt, überhaupt muss. Nur das ist eine Grundsatzdiskussion, in der sicherlich jeder einen anderen Standpunkt vertritt und würde sicherlich weit über den eigentlichen Thread hinausgehen.


----------

