Problema com Jtable e Frame

olá galera, tenho duas classes, uma classe com a JTable, e outra com a Frame, porem não consigo adicionar a JTable na tela…
abaixo os códigos… desde jah agradeço a todos…

package TelaAplicação;

import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import ClassesIMC.*;


public class PessoaTableModel extends AbstractTableModel {
	private static final long serialVersionUID = 1L;
	
    private List<Pessoa> linhas;
 
    
    public PessoaTableModel() {
        linhas = new ArrayList<Pessoa>();
    }
 
   
    public PessoaTableModel(List<Pessoa> listaDeSocios) {
        linhas = new ArrayList<Pessoa>(listaDeSocios);
    }
    
 
    private String[] colunas = new String[] {"Código", "Nome", "Peso", "Altura" };
 
    private static final int CODIGO = 0;
    private static final int NOME = 1;
    private static final int ALTURA = 2;
    private static final int PESO = 3;
    
    public int getRowCount() {
        return linhas.size();
    }
    
    public int getColumnCount() {
        return colunas.length;
    }
    
    public String getColumnName(int columnIndex) {
        return colunas[columnIndex];
    };
    
    public Class<?> getColumnClass(int columnIndex) {
        switch (columnIndex) {
        case CODIGO:
        	return int.class;
        case NOME:
            return String.class;
        case ALTURA:
            return double.class;
        case PESO:
        	return double.class;
        default:
            throw new IndexOutOfBoundsException("columnIndex out of bounds");
        }
    }
    
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return true;
    }
    
    public Object getValueAt(int rowIndex, int columnIndex) {
        
        Pessoa pessoa = linhas.get(rowIndex);
     
        switch (columnIndex) {
        case CODIGO:
        	return pessoa.getCodigo();
        case NOME:
            return pessoa.getNome();
        case ALTURA:
            return pessoa.getAltura();
        case PESO:
        	return pessoa.getPeso();
        default:
            throw new IndexOutOfBoundsException("columnIndex out of bounds");
        }
    }
    
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        
        Pessoa pessoa = linhas.get(rowIndex);
     
        switch (columnIndex) {
        case CODIGO:
            pessoa.setCodigo((int) aValue);
            break;
        case NOME:
           pessoa.setNome((String) aValue);
            break;
        case ALTURA:
            pessoa.setAltura((double) aValue);
            break;
        case PESO:
            pessoa.setPeso((double) aValue);
            break;
        default:
            throw new IndexOutOfBoundsException("columnIndex out of bounds");
        }
         
        fireTableCellUpdated(rowIndex, columnIndex); 
    }
    
    public Pessoa getPessoa(int indiceLinha) {
        return linhas.get(indiceLinha);
    }
     
   
    public void addPessoa(Pessoa pessoa) {
       
        linhas.add(pessoa);

        int ultimoIndice = getRowCount() - 1;
    
        fireTableRowsInserted(ultimoIndice, ultimoIndice);
    }
     
    public void removePessoa(int indiceLinha) {
      
        linhas.remove(indiceLinha);
      
        fireTableRowsDeleted(indiceLinha, indiceLinha);
    }
     
    public void addListaDePessoas(List<Pessoa> pessoas) {
       
        int indice = getRowCount();
    
        linhas.addAll(pessoas);
     
        fireTableRowsInserted(indice, indice + pessoas.size());
    }
     
   
    public void limpar() {
        
        linhas.clear();
        fireTableDataChanged();
    }
 
}

[code]package TelaAplicação;

import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Font;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;

import ClassesIMC.Pessoa;

public class Tela extends JFrame{
private static final long serialVersionUID = 1L;
private JLabel lbNome, lbPeso, lbAltura, lbCodigo, lbExPeso, lbExAltura;
private JTextField txtNome, txtPeso, txtAltura, txtCodigo;
private JButton btnSalvar, btnCalcularIMC, btnExcluir, btnPesquisar, btnLimpar;

public Tela(){
	super (" IMC ");
	
	Container tela = getContentPane();
    setLayout(null);
    lbNome = new JLabel("Nome");
    lbPeso = new JLabel("Peso");
    lbAltura= new JLabel("Altura");
    lbCodigo = new JLabel("Código");
    lbExPeso = new JLabel("Ex:68,8 ");
    lbExAltura = new JLabel("Ex:1,65 ");
    
    lbNome.setBounds(10, 15, 240, 15);
    lbPeso.setBounds(10, 60, 240, 15);
    lbAltura.setBounds(200, 60, 240, 15);
    lbCodigo.setBounds(430, 60, 240, 15);
    lbExPeso.setBounds(127, 62, 240, 15);
    lbExAltura.setBounds(337, 62, 240, 15);
    
    lbNome.setForeground(Color.BLACK);
    lbPeso.setForeground(Color.BLACK);
    lbAltura.setForeground(Color.BLACK);
    lbCodigo.setForeground(Color.BLACK);
    lbExPeso.setForeground(Color.GRAY);
    lbExAltura.setForeground(Color.GRAY);
    
    lbNome.setFont(new Font("Courier New", Font.BOLD, 16));
    lbPeso.setFont(new Font("Courier New", Font.BOLD, 16));
    lbAltura.setFont(new Font("Courier New", Font.BOLD, 16));
    lbCodigo.setFont(new Font("Courier New", Font.BOLD, 16));
    lbExPeso.setFont(new Font("Courier New", Font.BOLD, 15));
    lbExAltura.setFont(new Font("Courier New", Font.BOLD, 15));
	
    tela.add(lbNome);
    tela.add(lbAltura);
    tela.add(lbPeso);
    tela.add(lbCodigo);
    tela.add(lbExPeso);
    tela.add(lbExAltura);
    
    txtNome = new JTextField();
    txtPeso = new JTextField();
    txtAltura = new JTextField();
    txtCodigo = new JTextField();
    
    
    txtNome.setBounds(55, 10, 520, 30);
    txtPeso.setBounds(55, 55, 70, 30);
    txtAltura.setBounds(265, 55, 70, 30);
    txtCodigo.setBounds(500, 55, 75, 30);

    tela.add(txtNome);
    tela.add(txtPeso);
    tela.add(txtAltura);
    tela.add(txtCodigo);

    btnSalvar = new JButton("Salvar");
    btnCalcularIMC = new JButton("Calcular IMC");
    btnExcluir = new JButton("Excluir");
    btnPesquisar = new JButton("Pesquisar");
    btnLimpar = new JButton("Limpar");
    
    btnCalcularIMC.setBounds(170, 100, 200, 30);
    btnSalvar.setBounds(10, 150, 130, 30);
    btnExcluir.setBounds(155, 150, 130, 30);
    btnLimpar.setBounds(302, 150, 130, 30);
    btnPesquisar.setBounds(445, 150, 130, 30);
    
    tela.add(btnSalvar);
    tela.add(btnCalcularIMC);
    tela.add(btnExcluir);
    tela.add(btnPesquisar);
    tela.add(btnLimpar);
    tela.setBackground(Color.pink); 
    
    setSize(600, 400);
    setVisible(true);
    setLocation(null);
   
	
}
public static void main(String[] args) {
    Tela frame = new Tela();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}
[/code]

Rafa2012 AbstractTableModel é apenas um model de tabela.
Para isso cria um objeto do tipo JTable e passa o model ao instanciar.

Ai depois é só add o objeto JTable ao frame.

jah tentei amigão, mas não sei como fazer msm, não… obrigado

Rafa2012 vc ainda deseja fazer?

eu consiguir fazer a tabela aparecer, mas o nome das colunas não aparecem… desejo sim amigão…

Rafa2012 para a tabela aparecer com o título, cria um objeto do tipo JScrollPane e utilize o seguinte método:

Isso fará com que a tabela seja jogada dentro do Scroll, fazendo com que crie uma barra de rolagem, se for necessário, e apareça os rótulos da tabela.

E pronto, ao invés de vc add a tabela ao Jframe, add o scrollpane.

deu certo, valeu pela dica amigão… abraços