Como redimensionar componente usando Layout Manager ? Ex-> JTable c/ tamanho menor que o frame

Oi Pessoal, tem user aqui que fez uma tela de procura de registros bem bacana (abaixo o link)

Eu to querendo fazer algo parecido, mas minha tabela sempre fica do tamanho do frame, não fica com um pequeno espaço nas laterais da moldura do frame, eu to usando o BorderLayout. Ja tentei usar setMaximumSize mas nao resolveu…

[code]
JScrollPane tableAggregate;
JFrame frame = new JFrame(“Teste Tabelas”);
JPanel p1 = new JPanel(new FlowLayout(FlowLayout.LEFT, 20, 20));
JLabel label1 = new JLabel("Localizar ");
JTextField tf1 = new JTextField(30);
p1.add(label1);
p1.add(tf1);
tableAggregate = createTable();
tableAggregate.setMaximumSize(new Dimension(800,600));

            frame.getContentPane().setLayout(new BorderLayout(50,20));
	frame.getContentPane().add( tableAggregate, BorderLayout.CENTER);
	
	frame.add(p1,BorderLayout.SOUTH);
	frame.setSize(1024,768);		
	frame.setVisible(true);[/code]

Ela fica desse jeito

Use o WindowBuilder e o MigLayout. Um exemplo (não configurei a tabela direitinho) :

package bvmf;

import java.awt.EventQueue;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

import net.miginfocom.swing.MigLayout;

public class ExemploLayoutJTable extends JFrame {

    private JPanel contentPane;
    private JMenuBar menuBar;
    private JMenu mnOpes;
    private JMenuItem mntmSair;
    private JScrollPane scrollPane;
    private JLabel lblLocalizar;
    private JTextField textField;
    private JButton button;
    private JPanel panel;
    private JButton btnIncluir;
    private JButton btnExcluir;
    private JButton btnAlterar;
    private JButton btnConsultar;
    private JButton btnImprimir;
    private JTable table;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    ExemploLayoutJTable frame = new ExemploLayoutJTable();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public ExemploLayoutJTable() {
        setTitle("Arquivo de Representantes");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(new MigLayout("", "[432px,grow]", "[30px:n][grow][][]"));
        contentPane.add(getMenuBar_1(), "growx");
        contentPane.add(getScrollPane(), "cell 0 1,grow");
        contentPane.add(getLblLocalizar(), "flowx,cell 0 2,alignx right");
        contentPane.add(getTextField(), "cell 0 2");
        contentPane.add(getButton(), "cell 0 2");
        contentPane.add(getPanel(), "cell 0 3,grow");
    }

    private JMenuBar getMenuBar_1() {
        if (menuBar == null) {
            menuBar = new JMenuBar();
            menuBar.add(getMnOpes());
        }
        return menuBar;
    }

    private JMenu getMnOpes() {
        if (mnOpes == null) {
            mnOpes = new JMenu("Op\u00E7\u00F5es");
            mnOpes.add(getMntmSair());
        }
        return mnOpes;
    }

    private JMenuItem getMntmSair() {
        if (mntmSair == null) {
            mntmSair = new JMenuItem("Sair");
        }
        return mntmSair;
    }

    private JScrollPane getScrollPane() {
        if (scrollPane == null) {
            scrollPane = new JScrollPane();
            scrollPane.setViewportView(getTable());
        }
        return scrollPane;
    }

    private JLabel getLblLocalizar() {
        if (lblLocalizar == null) {
            lblLocalizar = new JLabel("Localizar:");
        }
        return lblLocalizar;
    }

    private JTextField getTextField() {
        if (textField == null) {
            textField = new JTextField();
            textField.setColumns(10);
        }
        return textField;
    }

    private JButton getButton() {
        if (button == null) {
            button = new JButton("...");
        }
        return button;
    }

    private JPanel getPanel() {
        if (panel == null) {
            panel = new JPanel();
            panel.add(getBtnIncluir());
            panel.add(getBtnExcluir());
            panel.add(getBtnAlterar());
            panel.add(getBtnConsultar());
            panel.add(getBtnImprimir());
        }
        return panel;
    }

    private JButton getBtnIncluir() {
        if (btnIncluir == null) {
            btnIncluir = new JButton("Incluir");
        }
        return btnIncluir;
    }

    private JButton getBtnExcluir() {
        if (btnExcluir == null) {
            btnExcluir = new JButton("Excluir");
        }
        return btnExcluir;
    }

    private JButton getBtnAlterar() {
        if (btnAlterar == null) {
            btnAlterar = new JButton("Alterar");
        }
        return btnAlterar;
    }

    private JButton getBtnConsultar() {
        if (btnConsultar == null) {
            btnConsultar = new JButton("Consultar");
        }
        return btnConsultar;
    }

    private JButton getBtnImprimir() {
        if (btnImprimir == null) {
            btnImprimir = new JButton("Imprimir");
        }
        return btnImprimir;
    }

    private JTable getTable() {
        if (table == null) {
            table = new JTable();
        }
        return table;
    }
}


Valeu entanglement, mais uma vez me dando um força :D. Vou dar uma boa olhada na sua solução.