Ajuda com Pesquisa em Jtable

2 respostas
jtablejava
G

Olá amigos, venho pedir humildemente ajuda para fazer uma pesquisa em uma Jtable que mostra dados de uma array list, em minha pesquisas na internet sobre o assunto não tenho compreendido muito bem sobre o assunto, apenas sei que tenho visto muito sobre tablemodel, tablerowsorter e muito mal sobre default table model.
Tenho um código que peguei da internet e tentei implementar no meu código, de inicio achei que funcionaria depois de fazer as devidas correções, mas infelizmente não.
Então peço uma ajuda para a correção do meu código e também uma ajuda para que eu possa entender com mais clareza sobre tal assunto que enfrento certa dificuldade, abaixo segue o código e agradeço muito desde já!
Trata-se de um programa que cadastra produtos com campos de codigo, quantidade, preço e descrição.

`

public FrmProdutos() {
   initComponents();

    try {
        DecimalFormat df = new DecimalFormat("R$ #,###,##0.00;-R$ #,###,##0.00");
        mfPreco = new NumberFormatter(df);
        mfPreco.setValueClass(Double.class);
        DefaultFormatterFactory dffPreco = new DefaultFormatterFactory(mfPreco);
        txtPreco.setFormatterFactory(dffPreco);
    } catch (Exception ex) {
        JOptionPane.showMessageDialog(null, "Ocorreu um Exception na aplicação do NumberFormatter: " + ex.getMessage(),
                "Erro: ", JOptionPane.ERROR_MESSAGE);
    }
}

         private void btnGravarActionPerformed(java.awt.event.ActionEvent evt) {                                          
       int linha = tblProduto.getSelectedRow();
    try {
        Produto produtoTemp = new Produto();

        produtoTemp.setCodPro(Integer.valueOf(txtCodigo.getText()));
        produtoTemp.setDescricao(txtDescricao.getText());
        produtoTemp.setQuantidade((Integer) spnQuantidade.getValue());
        produtoTemp.setPrecoUnit((Double) txtPreco.getValue());

        if (oper == Operacao.GRAVAR) {
            pro.add(produtoTemp);
        }
        if (oper == Operacao.EDITAR) {
            pro.set(linha, produtoTemp);
        }
        else {
            for (Produto produto : pro) {
                if (produtoTemp.getCodPro() == produto.getCodPro()) {
                    produto.setDescricao(produtoTemp.getDescricao());
                    produto.setQuantidade(produtoTemp.getQuantidade());
                    produto.setPrecoUnit(produtoTemp.getPrecoUnit());
                }
            }
        }
        btnCancelarActionPerformed(null);
        atualizaTabela(pro);
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, "Ocorreu um erro ao Gravar"
                + e.getMessage(), "Erro:", JOptionPane.ERROR_MESSAGE);
    }
}

//duvida

private void btnPesquisaActionPerformed(java.awt.event.ActionEvent evt) {                                            
    
    TableRowSorter sorter = new TableRowSorter();
    tblProduto.setRowSorter(sorter);
    String texto = txtFiltro.getText();
    if (texto.length() == 0) {
        sorter.setRowFilter(null);
        JOptionPane.showMessageDialog(null, "Você Deve Informar um Valor!!!", "AVISO - Erro", JOptionPane.ERROR_MESSAGE);
    } else {
        try {
            sorter.setRowFilter(RowFilter.regexFilter("(?i)" + texto));
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Valor Não Encontrado!!!", "AVISO - Erro", JOptionPane.ERROR_MESSAGE);
        }
    }
}

`

2 Respostas

4mega

Certo jovem, quero ver sua classe TableModel, se vc utiliza DefaultTableModel :expressionless: pode mostrar onde vc preenche ele, quero como vc esta manipulando o preenchimento do modelo, para que assim eu possa analisar como sera feita a pesquisa neste jTable

G

Olá, então, a minha situação é que eu acho (sim, isso mesmo) que não uso table model e n sei se uso o default embora eu acredite que um dos dois eu tenha q estar utilizando, oque me ocorre é que faço curso de programação e o método de ensino do professor e passar um código que é este primeiro a cima, e deixar funções como alterar, excluir e pesquisar para o aluno (no caso, eu) fazer por conta. Portanto o código não e de minha autoria, ate então consegui fazer o restante dos botoes faltando o nosso amigo pesquisar. Bom indo ao assunto, olhando aqui, creio que seja este abaixo o que esteja inserindo os dados da array list para a jTable, caso eu esteja falando alguma coisa muito errada peço perdão pela ignorância.

private void atualizaTabela(ArrayList<Produto> produtos) { util.limpaTable(tblProduto); if (produtos.isEmpty()) { JOptionPane.showMessageDialog(null, "Não foram encontrados produtos", "Atenção: ", JOptionPane.WARNING_MESSAGE); } else { DefaultTableModel dadosProdutos = (DefaultTableModel) tblProduto.getModel(); String Linha[] = new String[]{"", "", "", ""}; try { int posicao = -1; for (Produto produto : pro) { posicao++; dadosProdutos.addRow(Linha); dadosProdutos.setValueAt(produto.getCodPro(), posicao, 0); dadosProdutos.setValueAt(produto.getDescricao(), posicao, 1); dadosProdutos.setValueAt(produto.getQuantidade(), posicao, 2); dadosProdutos.setValueAt(mfPreco.valueToString(produto.getPrecoUnit()), posicao, 3); } } catch (Exception e) { JOptionPane.showMessageDialog(null, "Ocorreu um erro: " + e.getMessage(), "Erro: ", JOptionPane.ERROR_MESSAGE); } } }

Criado 19 de setembro de 2016
Ultima resposta 19 de set. de 2016
Respostas 2
Participantes 2