JTable formatada

Galera, alguém poderia me dizer como eu faço para formatar as colunas de uma JTable. Por exemplo: tenho uma coluna que só pode receber números e outra que é do tipo data e por ai vai. E também gostaria de saber como eu faço para colocar um JComboBox na tabela.

Você vai ter que criar sua própria TableModel

nesse link tem um bom exemplo

http://www.guj.com.br/java/149034-duvidas-ao-fazer-uma-consulta#808003

assim você já trabalha com os tipos de dados corretos da sua classe e consegue “personalizar” do jeito que você quiser.

Dê uma pesquisada sobre AbstractTableModel.

dpainformatica, estou fazendo assim:
tá certo? pois num to conseguindo fazer o JComboBox aparecer. Nem postei o código que tava tudo errado, se alguem ai puder me ajudar

import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.table.AbstractTableModel;
import sistemaproduto.Excecao.ClasseDeExcecao;
import sistemaproduto.modelo.dominio.Produto;

public class MeuModelo extends AbstractTableModel {

    private ArrayList lista = new ArrayList();
    private String[] colunas = {"Nome", "Quantidade",
        "Unidade de venda", "Valor unitário", "Valor total", "Data da compra"};

    public Produto getProdutoAt(int row) {
        return (Produto) lista.get(row);
    }

    public Produto removeProdutoAt(int row) {
        return (Produto) lista.remove(row);
    }

    public void addProduto(Produto w) {
        lista.add(w);
        fireTableDataChanged();
    }

    public void addProdutoList(List l) {
        lista.addAll(l);
        fireTableDataChanged();
    }

    public MeuModelo(List lista) {
        lista.addAll(lista);
    }

    public MeuModelo() {
    }

    public int getRowCount() {
        return lista.size();
    }

    @Override
    public String getColumnName(int i) {
        return colunas[i];
    }

    public int getColumnCount() {
        return colunas.length;
    }

    public Object getValueAt(int linha, int coluna) {
        Produto produto = (Produto) lista.get(linha);
        switch (coluna) {
            case 0:
                return produto.getNome();
            case 1:
                return produto.getQuantidade();
            case 2:
                return produto.getUnidadeVenda();
            case 3:
                return produto.getValorVenda();
            case 4:
                return produto.getValorCompra();
            case 5:
                return produto.getDataCompra();
            default:
                return null;
        }
    }

    @Override
    public boolean isCellEditable(int linha, int coluna) {
        switch (coluna) {
            case 0: //nome
                return true;
            case 1: //quantidade
                return true;
            case 2: //unidade de venda
                return true;
            case 3: //valor unitário
                return true;
            case 4: //valor total
                return true;
            case 5: //data da compra
                return true;
            default:
                return false;
        }
    }

    @Override
    public Class getColumnClass(int coluna) {
        switch (coluna) {
            case 0: //Nome
                return String.class;
            case 1: //Quantidade
                return BigDecimal.class;
            case 2: //unidade de venda
                return String.class;
            case 3: //valor unitário
                return BigDecimal.class;
            case 4: //valor total
                return BigDecimal.class;
            case 5: //data da compra
                return Date.class;
            default:
                return null;
        }
    }

    @Override
    public void setValueAt(Object valor, int linha, int coluna) {
        Produto produto = (Produto) lista.get(linha);
        switch (coluna) {
            case 0: //Nome
                try {
                    produto.setNome(valor.toString());
                } catch (ClasseDeExcecao ex) {
                    Logger.getLogger(ModeloTabela2.class.getName()).log(Level.SEVERE, null, ex);
                }
                break;
            case 1: //quantidade
                BigDecimal quantidade = new BigDecimal(valor.toString());
                produto.setQuantidade(quantidade);
                break;
            case 2: //unidade de venda
                try {
                    produto.setUnidadeVenda(valor.toString());
                } catch (ClasseDeExcecao ex) {
                    Logger.getLogger(ModeloTabela2.class.getName()).log(Level.SEVERE, null, ex);
                }
                break;
            case 3: //valor unitário
                BigDecimal valorUnit = new BigDecimal(valor.toString());
                produto.setValorVenda(valorUnit);
                break;

            case 4: //valor total
                BigDecimal valortotal = new BigDecimal(valor.toString());
                produto.setValorCompra(valortotal);
                break;
            case 5: //valor unitário
                SimpleDateFormat dataFormatada = new SimpleDateFormat("dd/mm/yyyy");
                Date data = null;
                try {
                    data = new java.util.Date(dataFormatada.parse(valor.toString()).getTime());
            try {
                produto.setDataCompra(data);
            } catch (ClasseDeExcecao ex) {
                Logger.getLogger(ModeloTabela2.class.getName()).log(Level.SEVERE, null, ex);
            }
                } catch (ParseException ex) {
                    Logger.getLogger(ModeloTabela2.class.getName()).log(Level.SEVERE, null, ex);
                }
                break;
        }
    }


}

Então a parte que “insere” a combobox em uma coluna não é feita no Model

você pode fazer assim :

private void inseriCombo(){

    //cria uma nova combo 
    JComboBox cmbSuaCombo = new JComboBox();

    //adiciona os items
    cmbSuaCombo.addItem("Item 1");
    cmbSuaCombo.addItem("Item 2");
    cmbSuaCombo.addItem("Item 3");
    cmbSuaCombo.addItem("Item 4");

   //"pega" a coluna que você quer colocar a combo
   TableColumn col1 = tblSuaTabela.getColumnModel().getColumn(1);

   //aqui você diz que terá uma combo
   col1.setCellEditor(new DefaultCellEditor(cmbSuaCombo));

}

acho que assim dá pra resolver