Um exemplo bem simples de utilização do GridLayout, fiz para minha monitoria de programação no IFRO. É a resolução de uma atividade proposta pelo professor Jones.
Preview:

Código:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* Created by Evandro Murilo on 8/30/17.
*/
public class SwingGrid extends JFrame implements ActionListener {
JLabel lblNome = new JLabel("Nome do funcionário: "),
lblTotalV = new JLabel("Total de vendas: "),
lblC = new JLabel("Comissão: "),
lblValorC = new JLabel("Valor da comissão: "),
lblS = new JLabel("Salário: "),
lblSC = new JLabel("Salário + Comissão: "),
lblEmpty = new JLabel("");
TextField txtNome = new TextField(),
txtTotalV = new TextField(),
txtValorC = new TextField(),
txtS = new TextField(),
txtSC = new TextField();
JRadioButton rb1 = new JRadioButton("1%"),
rb2 = new JRadioButton("2%"),
rb3 = new JRadioButton("3%"),
rb4 = new JRadioButton("4%");
JButton btnCalc = new JButton("Calcular");
ButtonGroup btnGroup = new ButtonGroup();
GridLayout gridLayout = new GridLayout(0, 2);
public SwingGrid() {
setTitle("Swing test");
setBounds(0, 0, 400, 400);
setLayout(gridLayout);
setResizable(false);
gridLayout.setVgap(10);
gridLayout.setHgap(20);
txtSC.setEditable(false);
txtValorC.setEditable(false);
add(lblNome);
add(txtNome);
add(lblTotalV);
add(txtTotalV);
add(lblC);
add(lblEmpty);
add(rb1);
add(rb2);
add(rb3);
add(rb4);
add(lblValorC);
add(txtValorC);
add(lblS);
add(txtS);
add(lblSC);
add(txtSC);
add(btnCalc);
btnGroup.add(rb1);
btnGroup.add(rb2);
btnGroup.add(rb3);
btnGroup.add(rb4);
btnCalc.addActionListener(this);
}
public static void main(String args[]) {
new SwingGrid().setVisible(true);
}
@Override
public void actionPerformed(ActionEvent actionEvent) {
double totalV, c, s, sc, p;
try {
totalV = Double.parseDouble(txtTotalV.getText());
s = Double.parseDouble(txtS.getText());
if (rb1.isSelected()) p = 0.01;
else if (rb2.isSelected()) p = 0.02;
else if (rb3.isSelected()) p = 0.03;
else p = 0.04;
c = totalV * p;
sc = s + c;
txtValorC.setText(c + "");
txtSC.setText(sc + "");
} catch (Exception e) {
txtValorC.setText("Error");
txtSC.setText("Error");
}
}
}