Cómo hacer que JTextArea se adhiera a la ventana

Hola, me gustaría que este TextArea se adhiera al tamaño de Windows cuando lo cambie de tamaño con el mouse, de la misma forma que lo hacen los botones inferiores. Este es el código en el que funciona perfectamente, no hay errores, por favor, eche un vistazo.

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.LayoutManager;


import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;


public class Rozklady extends JFrame {

public Rozklady() {
    super();    
}

public void createGUI(){
    setPreferredSize(new Dimension(400,150));
    JPanel jp = new JPanel();
//  jp.setLayout(new BoxLayout(jp, BoxLayout.Y_AXIS));
    jp.setLayout(new GridLayout(0,1));

    JPanel gora = new JPanel();
    JPanel dol = new JPanel();
    pack();
    JTextArea jt1 = new JTextArea("JF1");


    gora.add(jt1);

    jt1.setPreferredSize(new Dimension(getWidth(),getHeight()/2));
    dol.setLayout(new BorderLayout());

    JPanel lewo = new JPanel();
    JPanel prawo = new JPanel();
    JPanel srodek = new JPanel();



    dol.add(lewo, BorderLayout.EAST);
    dol.add(prawo,BorderLayout.WEST);
    dol.add(srodek, BorderLayout.CENTER);


    lewo.setLayout(new GridLayout(2,2));
    prawo.setLayout(new GridLayout(2,2));
    srodek.setLayout(new GridLayout(0,1));

    for(int i  = 0; i < 4; i++){
        lewo.add(new JButton(i+""));
        prawo.add(new JButton(i+""));
        if(i < 3){
            srodek.add(new JTextField("JF"+i));
        }
    }




    jp.add(gora);
    jp.add(dol);
    add(jp);
    setVisible(true);
    pack();
    setDefaultCloseOperation(EXIT_ON_CLOSE);
}





public static void main(String[] args) {
     SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
               new Rozklady().createGUI();
            }
        });

}

}

Respuestas a la pregunta(2)

Su respuesta a la pregunta