Posicionando componentes

Bom dia pessoal, criei um jpanel dentro de uma aba e não estou conseguindo posicionar os componentes na posição que desejo, ele adiciona tudo agrupado. Alguém pode me ajudar?

Obrigado!

Classe AbaCadastro


package Componentes;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.LayoutManager;
import javax.swing.BorderFactory;
import javax.swing.JPanel;

public class MeuPainelAbaCadastro extends JPanel {
    public JPanel painelEsquerda = new JPanel();
    public JPanel painelDireita = new JPanel();

    public JPanel painelInterno = new JPanel();
    public JPanel painelDados = new JPanel();

    public JPanel painelDadosAdicionais = new JPanel();
    public JPanel painelLabel = new JPanel();
    public JPanel painelBotao = new JPanel();

    public MeuPainelAbaCadastro(LayoutManager layoutEsquerda) {
       setLayout(new BorderLayout());
       painelEsquerda.setLayout(layoutEsquerda);
       add("Center", painelEsquerda);
       add("East", painelDireita);

       painelEsquerda.add(painelInterno);
       painelInterno.setLayout(new FlowLayout());
       painelInterno.setLayout(new BorderLayout());
       painelInterno.add("North", painelDados);
       painelInterno.add("South", painelDadosAdicionais);

       painelDadosAdicionais.setLayout(new BorderLayout());
       painelDadosAdicionais.add("West", painelLabel);
       painelDadosAdicionais.add("East", painelBotao);
       
       //painelDadosAdicionaisConsulta.setBorder(BorderFactory.createEtchedBorder());
       painelDados.setBorder(BorderFactory.createEtchedBorder());
       painelDadosAdicionais.setBorder(BorderFactory.createEtchedBorder());
    }
}

TelaCadastro


package Cadastros.Telas;

import Cadastros.Pesistencia.PersistenciaEstado;
import Componentes.MeuCampoCodigo;
import Estrutura.*;
import Componentes.MeuJTextField;
import Componentes.MeuPainelAbaCadastro;
import Componentes.MeuPainelAbaConsulta;
import Componentes.MinhaData;
import java.awt.Dimension;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.event.InternalFrameEvent;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;

public class TelaCadastroEstado extends TelaCadastro implements ListSelectionListener {
    
    private static TelaCadastroEstado telaCadastroEstado = null;
    private MeuCampoCodigo campoCodigo = new MeuCampoCodigo("Código", true, 5, false);
    private MinhaData campoData = new MinhaData("Data", true);
    private MeuJTextField campoNome = new MeuJTextField("Nome", true, 25);
    private MeuJTextField campoUf = new MeuJTextField("UF", true, 2);
    private DefaultTableModel dtm;
    private JTable tabela;
    private JScrollPane jsp;
    private PersistenciaEstado estado = new PersistenciaEstado();

    private MeuPainelAbaConsulta abaConsulta = new MeuPainelAbaConsulta(new GridBagLayout());
    private MeuPainelAbaCadastro abaCadastro = new MeuPainelAbaCadastro(new GridBagLayout());
    private JTabbedPane jtp = new JTabbedPane();

    private JLabel consultaSelecionado = new JLabel("Estado selecionado: ");
    private JLabel cadastroSelecionado = new JLabel("Estado Selecionado: ");

    public TelaCadastroEstado() {
        super("Cadastro de Estado");
        montaTela();
        preencheTabela();
        pack();
    }

    public void incluir() {
        super.incluir();
        estado.getPk();
        campoCodigo.setText(""+estado.getEstCodigo());
    }

    public static void getTela() {
        if (telaCadastroEstado == null) {
            telaCadastroEstado = new TelaCadastroEstado();
            Principal.jdp.add(telaCadastroEstado);
        }
        Principal.jdp.setSelectedFrame(telaCadastroEstado);
        telaCadastroEstado.requestFocus();
        Principal.jdp.moveToFront(telaCadastroEstado);
    }

    public void montaTela() {

        jtp.addTab("Consulta", abaConsulta);
        jtp.addTab("Cadastro", abaCadastro);
        add(jtp);

        abaCadastro.painelDireita.add(painelBotoes);
        painelBotoes.setLayout(new GridLayout(12, 1));
        painelBotoes.remove(jbConsultar);
        abaCadastro.painelDireita.setBorder(BorderFactory.createEtchedBorder());

        adicionarComponente(1,18,1,1, campoData, "Data", CIMA, abaCadastro.painelDados);  // É um método de uma classe TelaCadastro tentei fazer com setBaunds () mas também não posiciona onde eu quero.....
        adicionarComponente(3,2,1,1, campoCodigo, "Código", CIMA, abaCadastro.painelDados);
        adicionarComponente(3,4,3,1, campoNome, "Nome", CIMA, abaCadastro.painelDados);
        adicionarComponente(3,11,1,1, campoUf, "UF", CIMA, abaCadastro.painelDados);

        String[] colunas = new String[] {"Código", "Data Cadastro", "Nome", "UF"};
        String[][] dados = new String[][] {};

        dtm = new DefaultTableModel(dados, colunas);
        tabela = new JTable(dtm);
        tabela.getSelectionModel().addListSelectionListener(this);

        jsp = new JScrollPane(tabela);
        jsp.setPreferredSize(new Dimension (575,300));

        abaConsulta.painelDados.add(jsp);
        abaConsulta.painelDadosAdicionais.add(consultaSelecionado); 
        abaConsulta.painelBotao.add(jbSair2);

        abaCadastro.painelDadosAdicionais.add(cadastroSelecionado);
    }
}

[img]

[/img]

Desde já agradeço!

Amigo eu estava com um problema semelhante ao seu,resolvi da seguinte forma, em vez da classe q ficará "dentro’ da aba do tabbetPane extender Jpanel eu fiz ela Extends Container dei um setLayout e organizei os elementos(ai fica a seu critério como organizar,
Depos na classe q contem o tabbetPane eu coloquei
meuTabbetPane.addTab(“Nome da Aba”, new MinhaClasse())
Ai o container se ajusta dentro da aba do tabbetPane

Olá carlos,

Tem este Tutorial na net que pode te dar uma luz http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/Swing-Tutorial-JPanel.html

Tende dimensionar seu “painelEsquerda” e “painelInterno”, a proposito não sei se percebeu mas você esta setando 2 vezes o layout do painelInterno:

painelInterno.setLayout(new FlowLayout());  
painelInterno.setLayout(new BorderLayout());  

Mais uma coisa para evitar problemas de escrita e “bug” desnecessario sempre que possivel utilize as constantes que a API do Java oferece, tal como:

add( BorderLayout.CENTER, painelEsquerda); 

[]'s,
e boa sorte

Vou te dar um dica que vale um milhão de dólares, se estiver o Windows utilize o layout dele, tem layout que nem com reza brava da certo.

Valeu pessoal, vou ver se consigo!

Até mais!