Cómo arreglar la posición de los JPanels después de expandir el JFrame

Estoy tratando de hacer la interfaz de un programa usando Java Swing. Tengo un contenedor donde agrego 3 JPanels con algunos componentes. El problema es que cuando amplío el marco, todos esos 3 JPanels aparecen en la primera fila uno al lado del otro.

Aquí está mi código:

import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SpringLayout;
import javax.swing.border.LineBorder;

public class GraphicRefact extends JFrame {
    private Container container;

    private JButton button2;
    private JButton button1;
    private JTextField textField01;
    private JLabel label01;

    private JButton button03;
    private JButton button04;
    private JTextField textField03;
    private JLabel label03;

    private JButton button02;
    private JButton button01;
    private JTextField textField02;
    private JLabel label02;

    public static void main(String[] args) {
        new GraphicRefact();
    }

    public GraphicRefact() {
        initializeComponents();

        setTitle("Title");
        setSize(500, 150);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        container = new JPanel();


        JPanel panel01 = new JPanel();

        panel01.add(label01);
        panel01.add(textField01);
        panel01.add(button2);
        panel01.add(button1);
        panel01.setBorder(new LineBorder(Color.BLACK, 3));
        container.add(panel01);



        JPanel panel02 = new JPanel();

        panel02.add(label02);
        panel02.add(textField02);
        panel02.add(button02);
        panel02.add(button01);
        container.add(panel02);

        JPanel panel03 = new JPanel();

        panel03.add(label03);
        panel03.add(textField03);
        panel03.add(button03);
        panel03.add(button04);
        container.add(panel03);

        add(container);

    }

    private void initializeComponents() {

        button1 = new JButton("Open");
        button2 = new JButton("Close");
        textField01 = new JTextField("Choose the path...");
        label01 = new JLabel("Choose File: ");

        button01 = new JButton("Button01");
        button02 = new JButton("Button02");
        textField02 = new JTextField("Choose the path...");
        label02 = new JLabel("Choose Dir:");

        button03 = new JButton("Button03");
        button04 = new JButton("Button03");
        textField03 = new JTextField("Choose the path...");
        label03 = new JLabel("Choose Dir:");
    }

}

Así es como se ve el programa antes y después de expandir el marco.

Antes de:

ingrese la descripción de la imagen aquí

Después:

ingrese la descripción de la imagen aquí

Entonces, incluso después de expandir el marco, quiero que el programa deje esos 3 JPanels en el medio de cotainer.

¡Gracias!

Respuesta 1

Puede configurar gridLayout y poner esos elementos dentro.

JPanel jp = new JPanel();
GridLayout gl = new GridLayout(3,4) //3 rows, 4 columns
jp.setLayout(gl);

Después de hacer esto, simplemente coloque sus elementos dentro del diseño, por orden.

jp.add(label1);
jp.add(button1);
etc...
Respuesta: 2

Tienes que usar un LayoutManager adecuado . Mira los ejemplos allí. BoxLayout parece ser lo que quieres.

Respuesta: 3

No puedo ver dónde ha definido ninguna posición para nada, si necesita leer cómo se hace, puede comenzar aquí

Posicionar un JPanel en un JFrame en una posición específica

Respuesta: 4

http://support.xbox.com/en-us/contact-us usa javascript para crear algunas listas. Quiero poder analizar estas listas para su texto. Entonces, para la página anterior, quiero devolver lo siguiente: Facturación y ...

Considere el siguiente código: class New {id = 2; int id = 7; } Obviamente no se compilará ya que intentamos inicializar una variable no declarada. Encajonando la declaración en una inicialización ...

Soy nuevo en la programación de Java y me enfrento a un problema (muy probablemente) fácil que parece que no puedo transmitir ni comprender. Tengo tres archivos java diferentes, uno donde creo una interfaz (...

Quiero preguntar sobre la secuencia correcta "lectura" de esta expresión lógica: (verdadero && falso | verdadero) Pensé que devuelve falso, debido a la primera expresión - verdadero && falso Pero ...