Warum verliert meine Benutzeroberfläche die Formatierung, wenn sie im Browser ausgeführt wird oder auf meinem Computer ausgeführt wird (Java Swing)?

8

Für meine Klasse CSE 205 (Java-Programmierung 2) müssen wir ein wirklich einfaches GUI-Applet entwerfen. Ich bin mit Swing ziemlich vertraut, habe es vorher für ein paar meiner eigenen Projekte benutzt. Ich habe das Programm mit wenigen Problemen entworfen und es sieht auf meinem Computer perfekt aus, wenn es von Eclipse aus gestartet wird:

Aber wenn ich es online einreichen muss, wo es im Browser läuft, wird die Benutzeroberfläche stark dementiert und auf die Standardeinstellungen zurückgesetzt:

Ich habe mich daran gewöhnt, das GridBagLayout aufgrund seiner Einfachheit zu verwenden. Das ist es, was ich hier benutze. Die Klassen CreatePanel und SelectPanel (wie im ersten Bild zu sehen) erweitern beide JPanel (nach meinem Professor). Ich setze jedes mit:

%Vor%

Und und die Komponenten zu jedem von:

%Vor%

Hat jemand irgendwelche Vorstellungen von dem, was passieren könnte? Wenn man bedenkt, dass über die Hälfte meiner Zeit damit verbracht wurde, die Layouts richtig aussehen zu lassen, würde ich mich über eine einfache Lösung freuen. Ich kann bei Bedarf mehr Code posten. Danke für Anregungen.

- BEARBEITEN -

Okay, ich habe ein bisschen herumgespielt, basierend auf den Vorschlägen von @ MadProgrammer. Ich glaube, ich habe mich dort eingeschränkt, wo das Problem liegt.

Dies ist der Code, den ich verwende, um die Größe des JTextFields rechts neben der Bezeichnung "Geben Sie einen Haustier-Typ ein:

ein %Vor%

Wenn ich jetzt den Code auf etwas anderes setze, wie zum Beispiel die Anzahl der Spalten:

%Vor%

Ich erhalte eine Benutzeroberfläche, die identisch mit der ist, wenn ich sie online übergebe. Etwas mit der Anzahl der Spalten zu tun scheint es zu vermasseln. Hilft das, es für irgendjemanden einzuschränken?

    
rphello101 19.02.2013, 00:51
quelle

1 Antwort

9

Es gibt wirklich nicht genug Code, um das volle Ausmaß des Problems festzustellen, aber ein paar Ideen könnten helfen.

GridBagLayout wird versuchen, die Komponenten so zu erstellen, dass sie auf Basis der bevorzugten Größen erstellt werden können. Wenn es nicht möglich ist, wird stattdessen die Mindestgröße angezeigt.

Stellen Sie sicher, dass Sie Ihre Textkomponenten mit Spalten (und im Fall des Textbereichs) erstellen. Dies wird die bevorzugte Größe der Komponenten basierend auf einer Anzahl wichtiger Faktoren automatisch festlegen.

%Vor%

Leider wird irgendwann ein Punkt erreicht, an dem es einfach nicht mehr möglich ist, das Layout beizubehalten, und die Dinge werden entweder zusammenbrechen oder einfach abgeschnitten erscheinen.

In diesen Fällen könnten Sie den gesamten Container in einem JScrollPane platzieren, aber in diesem Fall wäre das ein Worst-Case-Szenario.

    
MadProgrammer 19.02.2013 01:49
quelle