Jasmine: Panels, Layoutmanager und deren Grösse

Hallo,

Ich verwende ein BorderLayout für mein JApplet. Ich dachte mir es sei sinnvoll, alle Komponenten die ich z.B. in den "Süden" platzieren möchte, wiederum in einem Panel unterzubringen. Dazu habe ich mir eine Methode createPanelSouth() geshrieben die mir das Fixfertige Panel zurückgibt, welches dann in der init()-Methode mit

getContentPane().add("South" , this.createPanelSouth());

entsprechend plaziert wird. Seit ich alle Komponenten in einem Panel unterbringe, werden diese alle geschrumpft und die zur verfügung stehende Grössen werden nicht mehr ausgenutzt.

Wie kriege ich es hin, dass die Panel im Süden, Norden usw. und deren Inhalte (JTextBoxes, JTextAreas, JLists...) automatisch wieder maximiert werden? Wenn ich das ganze ohne die Verschachtelung in einem Panel mache funktionierts!

Viele Grüsse Jasmine

  1. Hallo,

    Seit ich alle Komponenten in einem Panel unterbringe, werden diese alle geschrumpft und die zur verfügung stehende Grössen werden nicht mehr ausgenutzt.

    Du schreibst nicht, wie es auszusehen hat, also kann ich nur spekulieren.

    Vermutlich hast du diesem Panel für den Süden einfach keinen oder einen
    falschen LayoutManager zugewiesen. Wenn die gesamte Breite und Höhe
    des Panels genutzt werden soll, bietet sich evtl. das GridLayout an.

    Wenn ich jetzt völlig falsch liege, solltest du dein Problem sehr
    viel genauer beschreiben. Am besten mit Screenshot und Code.

    Übrigens solltest du dir überlegen, ob du nicht doch lieber das
    GridBagLayout verwenden möchtest. Das hat zwar auch so seine Nachteile,
    ist aber sehr mächtig (dafür aber auch komplizierter/kryptischer zu
    schreiben). Jedenfalls würdest du dir viele seltsame Schachtelungen
    ersparen, und dabei schneller und präziser zum gewünschten Ergebnis
    kommen.

    Gruß
    Slyh

    1. Hallo Slyh,

      tatsächlich habe ich dem Panel keinen LayoutManager zugewiesen. Wusste gar nicht, dass man das muss...

      Danke.

      Gruss Jasmine

    2. Hallo!

      Übrigens solltest du dir überlegen, ob du nicht doch lieber das
      GridBagLayout verwenden möchtest. Das hat zwar auch so seine Nachteile,
      ist aber sehr mächtig (dafür aber auch komplizierter/kryptischer zu
      schreiben). Jedenfalls würdest du dir viele seltsame Schachtelungen
      ersparen, und dabei schneller und präziser zum gewünschten Ergebnis
      kommen.

      Meines Erachtens ist das TableLayout von http://www.clearthought.info/software/TableLayout/ ein adäquater Ersatz für das GridBagLayout, da es eine ebenso präzise Aufteilung erlaubt, dabei aber wesentlich einfacher zu handeln ist. Problematisch dürfte nur für Anfänger sein, dass eine nicht-standardmäßige Bibliothek zum Client übertragen werden muss (zu lösen über Class-Path-Eintrag im Manifest des Applet-Archivs).

      Viele Grüsse
      Oliver

      --
      Wozu Socken? Sie schaffen nur Loecher!
      1. Hallo,

        Meines Erachtens ist das TableLayout von http://www.clearthought.info/software/TableLayout/ ein adäquater Ersatz für das GridBagLayout, da es eine ebenso präzise Aufteilung erlaubt, dabei aber wesentlich einfacher zu handeln ist.

        Kannte ich noch nicht.

        Ich kenne noch zwei weitere freie LayoutManager:

        JGoodies Forms (http://www.jgoodies.com/freeware/forms/)
          Der LayoutManager von Karsten Lentzsch ist hauptsächliche für
          präzise Dialog-Layouts gedacht. Auf der Seite gibt's eine Demo.
          Karten Lentzsch hat noch einige weitere interessante Java-Produkte
          im Angebot. Sehr zu empfehlen!

        Explicit Layout (http://www.zookitec.com/explicitlayout.html)
          Sehr mächtig und dabei trotzdem noch gut zu verstehen. Man positioniert
          (u.a.) Komponenten in Relation zueinander. Ungefähr so: "Positioniere
          Komponente A rechts neben Komponente B mit einem Abstand von 20
          Pixeln. Beachte einen Abstand zum unteren Rand von Komponente C
          von 10 Pixeln."
          Hört sich kompliziert an, läßt sich aber recht intuitiv programmieren.
          Man kann zusätzlich noch Komponenten entlang von Linien positionieren
          und verschiedenes mehr.

        Kürzlich habe ich auch einen LayoutManager geschrieben, der wohl
        ziemlich nah an das Explicit Layout rankommt. (Ich kannte es vorher
        nicht.) Ein paar Sachen fehlen, ein paar sind besser, ein paar sind
        anders.
        Mal schauen ob ich meinen LayoutManager irgendwann fertig programmiere,
        dann werde ich das evtl. hier posten.

        Gruß
        Slyh