Q:

Posicionar botões acimada tabela usando gerenciador de layouts

Eu estou tendo problemas posicionar componentes. Eu tenho uma tabela, e 3 botões, e eu estou tentando posicionar os botões acima da tabela de maneira centralizada.
Exemplo: 
Eu tentei usar o FlowLayout, e o resultado foi esse:
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class PosicionaTabela extends JFrame {

    public PosicionaTabela() {

        Tabela tab = new Tabela();
        add(tab);
        setSize(700, 400);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
    }

    public static void main(String[] args) {
        new PosicionaTabela().setVisible(true);
    }
}

class Tabela extends JPanel {

    private JScrollPane jsp = new JScrollPane();

    private JTable tabela = new JTable();

    private JButton botao1 = new JButton("1");
    private JButton botao2 = new JButton("2");
    private JButton botao3 = new JButton("3");

    public Tabela() {
        confgTabela();
    }

    private JComponent confgTabela() {
        JPanel painel = new JPanel();
        jsp.setViewportView(tabela);
        jsp.setPreferredSize(new Dimension(400, 200));
        add(jsp);
        add(botao1);
        add(botao2);
        add(botao3);
        return painel;
    }
}

A:

Fiz assim, usando um BorderLayout para ajudar:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class PosicionaTabela extends JFrame {

    public PosicionaTabela() {
        Tabela tab = new Tabela();
        add(tab);
        setSize(700, 400);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(() -> new PosicionaTabela().setVisible(true));
    }
}

class Tabela extends JPanel {

    private JScrollPane jsp = new JScrollPane();

    private JTable tabela = new JTable();

    private JButton botao1 = new JButton("1");
    private JButton botao2 = new JButton("2");
    private JButton botao3 = new JButton("3");

    public Tabela() {
        JPanel painel = new JPanel();
        jsp.setViewportView(tabela);
        jsp.setPreferredSize(new Dimension(400, 200));
        this.setLayout(new BorderLayout());
        add(jsp, BorderLayout.CENTER);
        add(painel, BorderLayout.NORTH);
        painel.add(botao1);
        painel.add(botao2);
        painel.add(botao3);
    }
}

Eis o resultado:

Acerca do EventQueue.invokeLater(...), veja mais sobre isso nessa outra resposta.

A:

Consegui isso no seu código modificando conforme abaixo:
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class PosicionaTabela extends JFrame {

    private JScrollPane jsp = new JScrollPane();

    private JTable tabela = new JTable();

    private JButton botao1 = new JButton("1");
    private JButton botao2 = new JButton("2");
    private JButton botao3 = new JButton("3");

    public PosicionaTabela() {

        getContentPane().add(getButtonsPanel(), BorderLayout.NORTH);
        getContentPane().add(getTabelaPanel(), BorderLayout.CENTER);
        setSize(700, 400);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
    }

    private JPanel getTabelaPanel() {
        JPanel painel = new JPanel();
        jsp.setViewportView(tabela);
        jsp.setPreferredSize(new Dimension(400, 200));
        painel.add(jsp);
        return painel;
    }

    private JPanel getButtonsPanel(){       
        JPanel painel = new JPanel();
        painel.add(botao1);
        painel.add(botao2);
        painel.add(botao3);
        return painel;
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new PosicionaTabela().setVisible(true));
    }
}

Há alguns problemas no código, como você criar um JPanel e retorná-lo mas não adicionar nada nele. Criei um painel pra retornar o JScrollPane apenas pra exemplificar mas ele nem é necessário, tendo em vista que esta classe já é um container por si só e pode ser adicionada diretamente ao JFrame.
Mais informações a respeito de Layout Managers podem ser encontradas no Guia oficial da oracle.

