tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
6122
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    mungoparks mungoparks ist offline Mitglied
    Registriert seit
    Mar 2004
    Beiträge
    21
    Hallo @ all,

    kurz vorneweg, ich habe alles zum Thema GridBagLayout hier im Forum gelesen das die Suchfunktion ausgeworfen hat. Leider
    hat es meine Frage nicht gelöst.
    Meine Frage bezüglich des GridBagLayout's(GBL) ist wie stelle ich es an das das GBL in einem JPanel
    auch in der linken oberen Ecke des JPanels "beginnt" und nicht in der Mitte des JPanels.

    Wenn ich z.B das GBL direkt an den Container gcp = getContentPane(); zuweise funktioniert es .
    Aber mein Container muss ein CardLayout haben und eine dieser Karten enthält einen JPanel mit BorderLayout.
    Im "North" diese JPanels ist ein weiterer JPanel mit GBL in dem verschieden Komponenten plaziert sind.
    Das einzige Problem ist , das wie oben erwähnt diese KOmponeten nicht ab der oberen linken Ecke plaziert
    werden, sondern "mittig".. Das GBL stimmt aber soweit d.h Die Komponenten sind im Verhältnis richtig angeordent
    nur halt nicht ab der linken oberen Ecke des JPanel.
    Wie kann ich es anstellen , das die Komponenten im JPanel
    auch ab dem oberen linken Eck angeordnet werden wie
    wenn ich sie direkt an dem Container gcp anbringe ?

    Hoffe jemand hier weiss Rat.
    Danke für alle Hinweise. Greetz
     

  2. #2
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo!

    Mal ganz schnell und naiv... schieb doch einfach noch ein oder zwei "leere" ausreichend große JPanels als "Positionierungshilfe" in das JPanel mit dem GBL...

    Gruß Tom
     

  3. #3
    mungoparks mungoparks ist offline Mitglied
    Registriert seit
    Mar 2004
    Beiträge
    21
    Hi Tom,

    sorry, aber ich verstehe deinen Gedankengang nicht .

    Was bringt das? Blicke die Idee dahinter nicht.
    Kann es leider erst heute Abend ausprobieren , da ich
    gerade Arbeiten soll. Melde mich später.

    Danke für deinen Ansatz.
    greetz

    ..Hi Tom ,

    habe gerade ein mini Beispiel hier gebastelt ,
    jetzt verstehe ich was du meinst. bin nicht sicher ob es
    für meine Applikation funktioniert, aber im "kleinen" siehts gut aus.
    HERZLICHEN DANK

    gruß
    ivan
    Geändert von mungoparks (22.03.04 um 13:18 Uhr)
     

  4. #4
    Supermario Supermario ist offline Mitglied Bronze
    Registriert seit
    Mar 2002
    Beiträge
    31
    hey, kannst du mal bitte dein mini beispiel hier posten? - würde mich auch interessieren. Bzw. gibt es keine andere Möglichkeit, mit der man den Ursprung vom GBL in einem Panel nach oben links verlagern kann?

    gruß
     

  5. #5
    Avatar von Billie
    Billie Billie ist offline Mitglied Platin
    Registriert seit
    Jan 2003
    Ort
    Arzl im Pitztal (Tirol)
    Beiträge
    510
    Hast du denn das Anchor Attribut gesetzt?

    Code java:
     

  6. #6
    Supermario Supermario ist offline Mitglied Bronze
    Registriert seit
    Mar 2002
    Beiträge
    31
    hmm auch wenn ich anchor setze, wird alles in der Mitte des JPanels angezeigt ...
     

  7. #7
    Supermario Supermario ist offline Mitglied Bronze
    Registriert seit
    Mar 2002
    Beiträge
    31
    hier mal ein code Beispiel

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    
    // private JPanel currentPanel;   
    // Methoden, die zuvor via ActionListener aufgerufen wurden:
    // this.remove(currentPanel);            
    // this.add(currentPanel = new Einstellungen());
     
    public Einstellungen()
    {   
                //Komponenten
                JLabel header = new JLabel("Trainer Einstellungen");
                JLabel vname = new JLabel("Vorname: ");
                
                JTextField fvname = new JTextField();
                
                
                this.setBorder(javax.swing.BorderFactory.createTitledBorder("Einstellungen"));          
                this.setSize(new Dimension(640, 480));
                
                GridBagConstraints c = new GridBagConstraints();
                this.setLayout(new GridBagLayout());
     
                c.gridwidth = GridBagConstraints.REMAINDER;
                c.gridheight = 2;
                c.insets = new Insets(0, 5, 0, 5);
                add(header, c);
                
                c.gridwidth = GridBagConstraints.RELATIVE;
                c.gridheight = 1;
                c.anchor = GridBagConstraints.WEST;
                add(vname, c);
                c.gridwidth = GridBagConstraints.REMAINDER;
                c.fill = GridBagConstraints.HORIZONTAL;
                add(fvname, c);
    }

    und immer steht es in der mitte - warum?
     

  8. #8
    haintje haintje ist offline Grünschnabel
    Registriert seit
    Mar 2007
    Beiträge
    1
    Hallo,

    falls das Problem noch besteht, versuch mal das:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    
                c.gridx=0;
                c.gridy=0;
                c.gridwidth = 2;
                c.gridheight = 1;
                [B]c.weightx=0;
                c.weighty=0;[/B]
                c.fill = GridBagConstraints.HORIZONTAL;
                c.anchor = GridBagConstraints.NORTHWEST;
                c.insets = new Insets(0, 5, 0, 5);
                add(header, c);
                
                c.gridx=0;
                c.gridy=1;
                c.gridwidth = 1;
                c.gridheight = 1;
                   [B]c.weightx=0;
                c.weighty=1;[/B]
                c.fill = GridBagConstraints.HORIZONTAL;
                c.anchor = GridBagConstraints.NORTHWEST;
                add(vname, c);
     
                
                c.gridx=1;
                c.gridy=1;
                    c.gridwidth = 1;
                c.gridheight = 1;
                    [B]c.weightx=1;
                c.weighty=1;[/B]
                c.anchor = GridBagConstraints.NORTHWEST;
                c.fill = GridBagConstraints.HORIZONTAL;
                add(fvname, c);

    Du musst immer die anteilige Weite (weightx oder weighty) der Komponenten angeben. Sonst wird der nichtgenutzte Platz gleichmäßig auf die Ränder des Panels verteilt und deine Komponenten in die Mitte des Panels gedrückt. (siehe auch http://java.sun.com/docs/books/tutor...t/gridbag.html)

    Gruß

    Antje
    Geändert von haintje (20.05.07 um 14:51 Uhr)
     

Ähnliche Themen

  1. JScrollPane für JPanel mit GridBagLayout
    Von pinsleepe im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 25.08.09, 13:15
  2. GridBagLayout und JPanel
    Von Pherseus im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 15.01.09, 17:04
  3. jpanel mit gridbaglayout neuzeichnen
    Von zuckerbrini im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 26.11.08, 00:41
  4. JScrollPane in JPanel + GridBagLayout
    Von woody100 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 19.03.08, 08:40
  5. Buttons in JPanel in GridBagLayout
    Von Armalyte im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 13.05.04, 14:39