Button layout outside of a GridLayout
<p>I'm currently doing a quite simple GUI and was wondering how I could get the button in question out from the <code>GridLayout</code> and put it in its own say <code>BorderLayout</code>, if that's a bit vague I'll attach images to show you what I mean:</p>

<p><a href="https://i.stack.imgur.com/sZWxS.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/sZWxS.jpg" alt="enter image description here"></a></p>

<p>With that picture I would like the button to not be with the grid layout and for it to fill all the way across at the bottom of the program as it would in a border layout. My code is as follows:</p>

<pre><code>import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
/**
 * Write a description of class HW4GUI here.
 *
 * @author (your name) 
 * @version (a version number or a date)
 */
  public class HW4GUI extends JFrame implements ActionListener
{
private JButton jbtAction;
private JTextField jtfFName;
private JTextField jtfLName;
private JTextField jtfLibNo;
private int nextLibNo;
private JPanel textPanel;

/**
 * The constructor for the GUI, also initalises nextLibNo number
 */
public HW4GUI()
{
    super("Adding a borrower");
    makeFrame();
    showFrame();
    nextLibNo = 1001;
}

/**
 *
 */
private void makeFrame()
{
    setLayout(new GridLayout(4,0));
    setResizable(false);
    textPanel = new JPanel();
    //textPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
    textPanel.setLayout(new BorderLayout());

    jtfFName = new JTextField(15);
    JLabel fNLbl = new JLabel("First Name: ");
    add(fNLbl);
    add(jtfFName);
    // add(textPanel);
    fNLbl.setHorizontalAlignment(JLabel.RIGHT);
    jtfFName.setEditable(true);

    jtfLName = new JTextField(15);
    JLabel lNLbl = new JLabel("Last Name: ");
    add(lNLbl);
    add(jtfLName);
    //add(textPanel);
    lNLbl.setHorizontalAlignment(JLabel.RIGHT);
    jtfLName.setEditable(true);

    jtfLibNo = new JTextField(15);
    JLabel lNOLbl = new JLabel("Library Number: ");
    add(lNOLbl);
    add(jtfLibNo);
    // add(textPanel);
    lNOLbl.setHorizontalAlignment(JLabel.RIGHT);
    jtfLibNo.setEditable(false);


    jbtAction = new JButton("Add Borrower");
    add(jbtAction, BorderLayout.SOUTH);
    jbtAction.addActionListener(this);

}

/**
 * displays the frame window where you can set the size of it and also other variables
 */
private void showFrame()
{
    setSize(400,200);
    setResizable(false);
    setLocationRelativeTo( null);
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public void actionPerformed(ActionEvent e)
{
    String fn = jtfFName.getText();
    String ln = jtfLName.getText();
    boolean valid = true;
    if (e.getActionCommand().equals("Add Borrower"))
    {
        if (fn.equals("") &amp;&amp; (ln.equals("")))
        {
            jtfLibNo.setText("No Names");
            valid = false;
        }
        else if (fn.equals("") )
        {
            jtfLibNo.setText("No First Name");
            valid = false;
        }
        else if (ln.equals(""))
        {
            jtfLibNo.setText("No Last Name");
            valid = false;
        }
        else

        if (valid == true)
        {
            String lib = Integer.toString(nextLibNo++);
            jtfLibNo.setText(lib);
            jbtAction.setText("Confirm");
        }
    }
    if (e.getActionCommand().equals("Confirm"))
    {
        jtfLibNo.setText("");
        jbtAction.setText("Add Borrower");
    }

}
}
</code></pre>