Announcement

Collapse
No announcement yet.

GridBagLayout

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • GridBagLayout

    Hallo zusammen,

    ich habe ein Problem mit dem GridBagLayout...

    und zwar habe ich in den Container mehrere JPanels hinzugefügt, wenn ich jetzt aber z.B. JButtons erst in ein JPanel adde und danach in ein anderes JPanel, dann verschieben sich die bereits vorhandenen JButtons nach oben.
    Ich hatte dasvor das GridLayout, mit diesem kann ich das Layout, auch nicht so entwerfen wie ich es mir vorgestellt habe...

    Gibt es vielleicht einen Befehl womit ich die Größe der JPanels fixieren kann ?

    Gruß
    Sancho

  • #2
    also mit den GridBaglayoutManager kann man so ziemlich alles machen :-) ich hatte auch etwas länger bis ich damit klargekommen bin ;-)

    sonst kannst es ja mit den NullLayoutmanager versuchen ;-) da kannste alles mit Koordinaten positionieren :-P

    Comment


    • #3
      Es gibt eine Reihe vollkommen verschiedener LayoutManager, die man ja auch in einem GUI kombinieren kann - durch Schachtelung von Panels.

      Vorab: einen "richtigen" LayoutManager für ein Problem gibt es eigentlich nicht. Es gibt immer mehrere Wege, ein Layout hinzubekommen.

      Daher empfehle ich, im Zweifelsfall das Fenster zuvor auf einem Blatt Papier grob zu skizzieren. Dann erkennt oft man "Bereiche" innerhalb des Fensters, die einem für die Wahl eines LayoutManagers hilfreich sind.

      Beispiel:
      Man hat einen Dialog zur Eingabe einer Adresse, die wie üblich aus Strasse, Hausnummer, Postleitzahl und Ort besteht. Unten im Dialog hat man Buttons zum Speichern und Abbrechen.
      In diesem Fall ergeben sich die beiden Bereiche Eingabefelder und Button-Zeile. Ich würde diese Bereiche jeweils als eigenes JPanel realisieren.
      Die Button-Zeile ist unten im Dialog und zudem vergleichsweise schmal (in der Höhe), den Großteil des Dialogs nimmt das JPanel mit den Textfeldern ein. Ich würde dafür das BorderLayout verwenden. Das BorderLayout hat einen CENTER-Bereich, der den meisten Platz einnimmt, und - falls benötigt noch die "Randbereiche" WEST, NORTH, EAST und SOUTH. Das JPanel mit den Buttons platziere ich dann in den Bereich BorderLayout.SOUTH, die anderen Randbereiche lasse ich ungenutzt, sie nehmen dann auch keinen Platz weg.
      Jetzt kann man die Textfelder innerhalb des Adress-JPanels anordnen, so daß sie zum Beispielbündig sind. Das kann man mit dem GridBagLayout machen, was jetzt ohne Buttons einfacher wird. Oder man macht es mit dem BoxLayout, was die Componenten jeweils in einer Reihe (eine Spalte oder eine Zeile - je nach Ausrichtung, bei uns in einer Spalte) darstellt und dies bündig machen kann.

      Man nimmt jedenfalls eine Menge Komplexität raus, indem man nicht alle Komponenten auf einer Ebene platziert, sondern in Panels platziert, die ggf. wieder in anderen Panels zusammengefaßt sein können und so weiter.

      In der Hoffnung, geholfen zu haben,
      Stefan Gawlick

      Comment

      Working...
      X