Comparar id em jtable

Galera alguem sabe me informar como que comparo se o item que estou tentando incluir já está no jtable?
Sei que pelo código do produto, mas ñ sei como comparar.

[code]private void incluirProduto(){
if (verificarQuantidade()){

        String quantidade = String.valueOf(ftfQuantidade.getValue());
        
        ProdutoBean produtoAlteraEstoque = new ProdutoBean();
        ProdutoControl pc = new ProdutoControl();      
        produtoAlteraEstoque = pc.consultar(produtos.get(cbProdutos.getSelectedIndex()).getCodigo()); 
        if(Integer.parseInt(quantidade) > produtoAlteraEstoque.getEstoque()){
            JOptionPane.showMessageDialog(this, "Quantidade maior que o estoque, tente quantidade menor.");    
        }else{
            VendasBean vb = new VendasBean();
            vb.setNomeProduto(produtos.get(cbProdutos.getSelectedIndex()).getNome());
            vb.setCodigoProduto(produtos.get(cbProdutos.getSelectedIndex()).getCodigo());
            
            vb.setQuantidade(Integer.parseInt(String.valueOf(ftfQuantidade.getValue())));
            venda.add(vb);
            String produto = produtos.get(cbProdutos.getSelectedIndex()).getNome();
            
            String valor = String.valueOf(produtos.get(cbProdutos.getSelectedIndex()).getValor() * Integer.parseInt(quantidade));//ñ da para colocar aqui   
            String [] campos = new String [] { produto, quantidade, valor };
            tmVendas.addRow(campos);
           /* if(vb.getCodigoProduto(produtos))== vb.getCodigoProduto(produtos){
                             JOptionPane.showMessageDialog(this, "Produto já inserido.");    

            }*/
            total += Double.parseDouble(valor);
          
            ftfTotal.setValue(total);
              if(tbVendas.getRowCount() > 0){
                      cbClientes.setEnabled(false);
            //tem que carregar em um objeto produto, a quantidade do estoque anterior, para poder subtrair
            produtoAlteraEstoque.setEstoque(produtoAlteraEstoque.getEstoque() - Integer.parseInt(quantidade));//estoque atual = estoque anterior - quantidade
            pc.alterarEstoqueProduto(produtoAlteraEstoque);
              }     
        }
    } else {
        JOptionPane.showMessageDialog(this, "Quantidade invalida!");
        ftfQuantidade.requestFocus();
    }
}


private void RemoverProduto(){
    if (verificarQuantidade()){
        VendasBean vb = new VendasBean();
        vb.setNomeProduto(produtos.get(cbProdutos.getSelectedIndex()).getNome());
        vb.setQuantidade(Integer.parseInt(String.valueOf(ftfQuantidade.getValue())));
        int row = tbVendas.getSelectedRow();
        tmVendas.removeRow(row);
        if(tmVendas.getRowCount()== 0)
        cbClientes.setEnabled(true);     
    }
}[/code]

Opa, neybox.
Foi o que te falei no outro tópico: porque você ainda tá se torturando com o DefaultTableModel?
Se você criasse um modelo próprio pra sua tabela, todos esses problemas já estariam resolvidos.
Acesse o link na minha assinatura para aprender como se faz. Vai por mim, é muito, mas MUITO melhor trabalhar com um modelo próprio.

Agora, respondendo sua pergunta supondo que você vai ser um cara inteligente que vai parar de usar o DefaultTableModel (rs):

  1. No seu TableModel (vou chamá-lo de ProdutosTableModel), você deverá criar um método adicionarProduto ou coisa similar:

[code]public void adicionarProduto(Produto produto) {

int index = produtos.indexOf(produto);
if (index == -1) {
    produtos.add(produto);
}

}[/code]
Você tem a sua coleção de produtos. Quando você usa o indexOf(), você procura na coleção se tem algum objeto que seja igual àquele do parâmetro que, no caso, é o que você quer adicionar. Se ele retornar -1, quer dizer que o objeto não está na coleção, e então você pode adicioná-lo.
Viu como fica mais simples?

Espero ter ajudado,
fique com Deus! :smiley:

Eu acho que o principal motivo para que exista tanta gente insistindo no DTM é por ser a única solução nativa implementada para trabalhar com JTables…
Tenho certeza que surgem perguntas do tipo “Tenho que fazer uma classe implementando vários métodos só para poder listar os meus dados?” ou “Por que devo parar de usar se o DTM já está pronto pra mim?” ou “Eu não acho difícil trabalhar com vetores de String nas colunas e linhas das tabelas”

Se você quer uma solução pronta e não quer pensar muito em como construir o seu TableModel (como deveria), use o ObjectTableModel criado pelo Mark…

[quote=erico_kl]Eu acho que o principal motivo para que exista tanta gente insistindo no DTM é por ser a única solução nativa implementada para trabalhar com JTables…
Tenho certeza que surgem perguntas do tipo “Tenho que fazer uma classe implementando vários métodos só para poder listar os meus dados?” ou “Por que devo parar de usar se o DTM já está pronto pra mim?” ou “Eu não acho difícil trabalhar com vetores de String nas colunas e linhas das tabelas”

Se você quer uma solução pronta e não quer pensar muito em como construir o seu TableModel (como deveria), use o ObjectTableModel criado pelo Mark…[/quote]

Faz sentido sua resposta, erico_kl. Mas acho que as pessoas deveriam começar pelo caminho das pedras e depois sim partir para soluções viáveis prontas.
Por exemplo: antes de eu usar o ObjectTableModel do Mark, eu aprendi a fazer minha classe estendendo da interface AbstractTableModel. Quando estava “craque” nesse tipo de construção de tabelas, aí sim parti para o ObjectTableModel. Portanto, eu indico que as pessoas comecem do início, que é criando seus próprios modelos, para entenderem como funciona o ObjectTableModel do Mark por dentro, entende?

Vamos ver no que vai dar esse tópico!

[quote=Nicolas Fernandes][quote=erico_kl]Eu acho que o principal motivo para que exista tanta gente insistindo no DTM é por ser a única solução nativa implementada para trabalhar com JTables…
Tenho certeza que surgem perguntas do tipo “Tenho que fazer uma classe implementando vários métodos só para poder listar os meus dados?” ou “Por que devo parar de usar se o DTM já está pronto pra mim?” ou “Eu não acho difícil trabalhar com vetores de String nas colunas e linhas das tabelas”

Se você quer uma solução pronta e não quer pensar muito em como construir o seu TableModel (como deveria), use o ObjectTableModel criado pelo Mark…[/quote]

Faz sentido sua resposta, erico_kl. Mas acho que as pessoas deveriam começar pelo caminho das pedras e depois sim partir para soluções viáveis prontas.
Por exemplo: antes de eu usar o ObjectTableModel do Mark, eu aprendi a fazer minha classe estendendo da interface AbstractTableModel. Quando estava “craque” nesse tipo de construção de tabelas, aí sim parti para o ObjectTableModel. Portanto, eu indico que as pessoas comecem do início, que é criando seus próprios modelos, para entenderem como funciona o ObjectTableModel do Mark por dentro, entende?

Vamos ver no que vai dar esse tópico![/quote]
Claro, também concordo contigo, tanto que disse em “constriuir o TableModel próprio (como deveria)”…
Mas muita gente não encontra motivação pra estudar algo novo tendo uma implementação pronta que já atende (de uma forma extremamente ruim, mas que o programador não sabe) à sua necessidade. Não acho que deva-se começar pela ObjectTableModel sem saber nem o que um setValueAt faz, foi mais numa tentativa de “Antes não saber e usar OTM do que não saber, não conhecer os problemas, não achar trabalhoso, e continuar usando DTM”

Isso acontece muito, e não só com table models. Quanta gente por aí que constrói frames pelo NetBeans e não sabe nem o que é um ActionListener. Quanta gente usa hibernate mas não sabe nem o que é um PreparedStatement. Quanta gente programa em java e não sabe nem o que é javac, porque começou direto com uma IDE que já dava tudo pronto…

Mas sem querer fugir muito do assunto, não sei porquê o DTM não ficou deprecated no java 7… Talvez incentivaria às pessoas abandonarem ele de vez e procurarem soluções mais seguras, simples e orientadas à objeto criando TableModels próprios…