Tamanho dos botões criados

Estou criando alguns botões mas eles não respeitam o tamanho fixado. Como resolver?

public void cria_botao() throws SQLException {
        BDJeanus bd = new BDJeanus();
        bd.conecta();
        Statement qCP = bd.getConexao().createStatement();
        ResultSet rs;
        int linha = (int) Math.ceil((double) total / coluna);

        GridLayout experimentLayout = new GridLayout(linha, coluna);
        pnPoltrona.setLayout(experimentLayout);

        for (l = 0; l < linha; l++) {
            for (c = 0; c < coluna; c++) {
                if (cont < total + 1) {

                    JButton botao = new JButton(cont + "");
                    botao.setSize(20, 20); //Criar no tamanho 20x20 
                    botao.addActionListener(this);
                    pnPoltrona.add(botao);

                    rs = qCP.executeQuery("select * from poltronas where id_poltrona = " + cont + " and id_voo = " + txVooReserva.getText() + " and reservado = 1");
                    if (rs.next()) {
                        botao.setBackground(Color.gray);
                    } else {
                        botao.setBackground(Color.green);
                    }
                    cont++;
                }
            }
        }
    }

Grid layout não repeita tamanho mesmo, use flow layout, ou box layout.