tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
263
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Hurricane123 Hurricane123 ist offline Rookie
    Registriert seit
    May 2007
    Beiträge
    6
    Hallo liebe Foren Gemeinde !

    Ich hab ein ganz dickes Problem.

    Ich arbeite an einen Java-Projekt für die Schule. Es geht um die Auswertung von Daten die über eine Textdatei eingelesen und ausgewertet werden sollen etc...

    Dies nur kurz zur Einführung, das Programm ist fertig und funktioniert wie erwartet. Mein Problem liegt beim Layout.

    Ich arbeite mit einem GridBagLayout. Die Anordnung entspricht auch (weitesgehend) meinen Erwartungen.

    Nun zum eigentlichen Problem:

    Nachdem ich eine Textdatei eingelesen hab wird der Inhalt in die linke JListBox geschrieben. Wenn ich nun die Daten sortiere und die verchiedenen JRadiouttons aktiviere, bzw. die JComboBoxen fülle verändert sich die Größe der Komponenten.
    Genauer gesagt, die komplette Linke Seite wird breiter (Also alle Komponenten auf der linken Seite).

    Ich vermute es liegt daran das sich irgendwelche Abstände oder Größen verändern wenn die ComboBoxen gefüllt, bzw. die RadioButtons den Fokus haben.
    Leider habe ich nur nix brauchbares hierzu im Web gefunden.

    Der grundsätzliche Aufbau ist folgender:
    Es gibt ein Hauptpanel mit GridBagLyout und 2 Spalten denen die ganzen komponenten hinzugefügt werden.
    Die JRadioButtons sind auf einem eigenen Panel, ebenfalls mit GridBagLayout angeordnet.

    Ich hoffe ihr könnt mir helfen.

    Schonmal vielen Dank im voraus.

    Hier ist der Link zum Teil des Quelltextes in dem das Layout initialisiert wird:
    http://nopaste.php-quake.net/29921

    Als Anhang noch die Bilder bevor und nachdem sich das Layout geändert hat.
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken Komponenten verändern eigenständig ihre Größe-layout_messdaten.jpg   Komponenten verändern eigenständig ihre Größe-messdaten_danach.jpg  

     

  2. #2
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Haben linke und rechte Seite die selbe Gewichtung in y Richtung?
     

  3. #3
    Hurricane123 Hurricane123 ist offline Rookie
    Registriert seit
    May 2007
    Beiträge
    6
    Zitat Zitat von zeja Beitrag anzeigen
    Haben linke und rechte Seite die selbe Gewichtung in y Richtung?

    Hi.
    Also ich hab in y-Richtung bisher keine Gewichtung angegeben, hab das aber gerade mal ausprobiert und in y-Richtung allen die gleiche Gewichtung gegeben. Hatte aber auf das angesprochene Problem leider keine Auswirkung. Es hat sich halt nur die Anordnung in y-Richtung angepasst.
     

  4. #4
    Avatar von Vincentius
    Vincentius Vincentius ist offline Mitglied Brokat
    Registriert seit
    Sep 2004
    Ort
    Stuttgart
    Beiträge
    295
    Hallo,

    ich vermute, es liegt daran, dass wenn die Listen, ComboBoxen etc. gefüllt werden verändert sich ihre preferredSize, und die ist wohl auf der linken Seite etwas größer. Eigentlich setzt du ja schon die Gewichtung in den Layout Constraints auf 0.5, aber offensichtlich reicht das nicht. Ich würde die linke und die rechte Seite komplett von einander trennen, sie auf eigene Panels packen und mittels GridLayout(1, 2) platzieren. Die restlichen Komponenten auf den jeweiligen Panels wie bis jetzt mit dem GridBagLayout layouten. Der Vorteil ist, dass das GridLayout wirklich dafür sorgt, dass die Zellen gleich groß sind, unabhängig von dem Inhalt.

    Grüße
    Vincent
     

  5. #5
    Hurricane123 Hurricane123 ist offline Rookie
    Registriert seit
    May 2007
    Beiträge
    6
    Zitat Zitat von Vincentius Beitrag anzeigen
    Hallo,

    ich vermute, es liegt daran, dass wenn die Listen, ComboBoxen etc. gefüllt werden verändert sich ihre preferredSize, und die ist wohl auf der linken Seite etwas größer. Eigentlich setzt du ja schon die Gewichtung in den Layout Constraints auf 0.5, aber offensichtlich reicht das nicht. Ich würde die linke und die rechte Seite komplett von einander trennen, sie auf eigene Panels packen und mittels GridLayout(1, 2) platzieren. Die restlichen Komponenten auf den jeweiligen Panels wie bis jetzt mit dem GridBagLayout layouten. Der Vorteil ist, dass das GridLayout wirklich dafür sorgt, dass die Zellen gleich groß sind, unabhängig von dem Inhalt.

    Grüße
    Vincent
    Hallo,

    erstmal danke für die Antworten. Auf die einfachste lösung bin ich natürlich nicht gekommen.
    Jedoch verändert sich die Größe immer noch ...
    Ein Idee von mir wäre jetzt für jede einzelne Komponente die preferred Size zu setzen, aber macht das Sinn ? Wäre ja ziemlich aufwendig ... da ich ja die gesamte Größe des Fenster in Prozent angebe, abhängig von der Bildschirmauflösung ...

    Hier noch mal der aktuelle Quelltext:
    http://nopaste.php-quake.net/30254

    Gruß Hurricane ...
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken Komponenten verändern eigenständig ihre Größe-layout_neu.jpg   Komponenten verändern eigenständig ihre Größe-layout_danach_neu.jpg  

     

  6. #6
    Hurricane123 Hurricane123 ist offline Rookie
    Registriert seit
    May 2007
    Beiträge
    6
    Hi.

    Das ganze hat sich nun endlich erledigt. Ich hab das ganze über ein Null - Layout realisiert. Funktioniert einwandfrei. Trotzdem vielen Dank an alle die geholfen haben.

    Gruß Hurricane
     

  7. #7
    Avatar von mschlegel
    mschlegel mschlegel ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Beiträge
    202
    Hi

    Hab jetzt nicht jeden Post genau verfolgt, aber falls du zukünftig mal ein komplexeres Layout gestallten willst, bei dem die Komponenten auch variabel platziert werden können und trotzdem automatisch ihre Größe anpassen, dann empfehle ich das FormLayout.

    Man muss zwar etwas mehr schreiben, aber dafür kann man Elemente direk anhand der benachbarten Elemente anordnen. Ich persönlich nutze hauptsächlich dieses Layout und für kleinere eingebetete Bereich das GridLayout.

    Ich hab damals auch viel mit GridBagLayout herumexperimentiert, bin aber nur selten zu dem gewünschten Ergebnis gekommen (mag natürlich auch daran liegen dass ich etwas falsch gemacht habe)

    Hier mal ein kurzes SWT-Beispiel (ich bin mir gerade nicht sicher ob dieses Layout, in dieser Form, standardmäßig in Java integriert ist - da ich SWT/JFace bevorzuge. Es gibt es aber definitiv als zusätzliches Jar irgendwo).
     

Ähnliche Themen

  1. JInternalFrame größe verändern
    Von Leroux im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 13.01.09, 08:24
  2. BorderLayout Größe verändern
    Von deni74 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 11.10.07, 14:42
  3. BufferedImage größe verändern
    Von bl4ck29 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 7
    Letzter Beitrag: 20.06.05, 18:48
  4. Programm um Größe von Bildern zu verändern.
    Von 0-Checker im Forum Sonstige Grafik-Programme
    Antworten: 2
    Letzter Beitrag: 15.01.05, 23:36
  5. hover größe verändern
    Von sonicks im Forum CSS
    Antworten: 2
    Letzter Beitrag: 24.10.01, 19:34