Größenveränderung mit LayoutManagern

zer0

Erfahrenes Mitglied
Hallo,

ich habe mir eine GUI gebaut und die Elemente mittels setBounds(); positioniert. Nun möchte ich das ganze auch mit einem LayoutManager bewerkstelligen.
Leider klappt das nicht so. Ich finde keine Lösung wie ich mein JTextField in der Breite anpassbar und die Höhe fest machen kann.

Ich habe ein MainPanel was das GridLayout(5, 1); hat mit 5 Zeilen und 1 Spalte. In jede dieser Spalten kommt nun wieder ein subPanel was ein BorderLayout(); hat. Dort Positionier ich wiederrum 3 Panel's, WEST, CENTER und EAST. In dem 1. und 3. Panel ist ein Label, im 2. Panel mein TextField. Das TextField bekomm ich einfach nicht so hin, das es sichd er Breite anpasst, also wenn das Fenster größer wird, aber in der Höhe gleich bleibt.
 
Moin,

hab mich mal dran versucht und vielleicht ist es ja genau das was Du suchst:

Java:
import javax.swing.*;
import java.awt.*;

public class MyPanel extends Panel {
    public MyPanel() {
        init();
    }

    private void init() {
        setLayout(new GridLayout(5, 1));
        add(new SplitPanel());
        add(new SplitPanel());
        add(new SplitPanel());
        add(new SplitPanel());
        add(new SplitPanel());
    }

    public static void main(String[] args) {
        JFrame f = new JFrame("Panel Test");
        f.add(new MyPanel());
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }
}

class SplitPanel extends JPanel {
    private JPanel middle;

    public SplitPanel() {
        init();
    }

    private void init() {
        setLayout(new BorderLayout());
        middle = new JPanel();

        GridBagConstraints c = new GridBagConstraints();
        c.fill = GridBagConstraints.HORIZONTAL;
        c.weightx = 1;
        
        middle.setLayout(new GridBagLayout());
        middle.add(new JTextField("Hier steht irgendein Text"), c);
        
        add(new JLabel("WEST"), BorderLayout.WEST);
        add(middle, BorderLayout.CENTER);
        add(new JLabel("EAST"), BorderLayout.EAST);
    }
}

Gruß,
Xan
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück