Erro com getRowCount() em jTextField

6 respostas
marcusluiz83

Boa tarde!

Gostaria de exibir o número de registros de minha jTable em um jTextField. Estou usando o seguinte código:

int soma = tbTitular.getRowCount(); tfTotalTitular.setText(Integer.toString(soma));

Só que desta forma, o resultado em meu jTextField é sempre 0. O que está errado em meu código?

Agradeço pela ajuda!

6 Respostas

ViniGodoy

Esse código foi colocado após você alterar o model da tabela, certo?

marcusluiz83

Sim!

Como faço para corrigir?

Obrigado!!!

ViniGodoy

Posta o código todo. Assim está bem difícil de ver onde está o problema.

Isso aí devia estar funcionando. Se o código for muito longo, não poste direto no corpo do post, e sim, use a opção de attachments.

marcusluiz83

hehehehe. Vou postar mas você vai me xingar. Estou usando DefaultTableModel :oops:

ViniGodoy

Bom... você seta o seu JTextField no initComponents(). O initComponents() roda antes do método mostraListagem(). Portanto, durante o initComponents() quantas linhas tem a tabela? 0.

Lembra que eu te perguntei:

Esse código foi colocado após você alterar o model da tabela, certo?

Se você quer corrigir, coloque aquelas duas linhas no método mostrarPesquisa:
private void mostraPesquisa(List<Titular> titular) {
        while (tmTitular.getRowCount() > 0) {
            tmTitular.removeRow(0);
        }
        if (titular.size() == 0) {
            JOptionPane.showMessageDialog(null, "Funcionário não encontrado");
        } else {
            String[] linha = new String[]{null, null, null, null, null, null};
            for (int i = 0; i < titular.size(); i++) {
                tmTitular.addRow(linha);
                tmTitular.setValueAt(titular.get(i).getDataCadastro(), i, 0);
                tmTitular.setValueAt(titular.get(i).getNome(), i, 1);
                tmTitular.setValueAt(titular.get(i).getLoja(), i, 2);
                tmTitular.setValueAt(titular.get(i).getSituacao(), i, 3);
                tmTitular.setValueAt(titular.get(i).getNumeroCartao(), i, 4);
            }
        }

        //Após preencher a tabela, mostra a quantidade de linhas.
        int linhas = tbTitular.getRowCount();
        tfTotalTitular.setText(Integer.toString(soma));
    }

Agora, vamos a questão do DefaultTableModel. Por que você ainda não criou um TitularTableModel e um DependenteTableModel? O código ficaria bem mais simples do que o que está aí. Por exemplo, esse mesmo método acima ficaria assim:

private void mostraPesquisa(List<Titular> titular) {
   modelTitular.set(titular);

   //Após preencher a tabela, mostra a quantidade de linhas.
   int linhas = tbTitular.getRowCount();
   tfTotalTitular.setText(Integer.toString(soma));

   if (titular.size() == 0) {
      JOptionPane.showMessageDialog(null, "Funcionário não encontrado");
   }
}

Você tem certeza que quer continuar a trabalhar com o Default? Pense bem, pois é o caminho mais difícil.

marcusluiz83

Bom dia!

Cara, deu certo. Valeu mesmo.

Próxima missão: abandonar defaultTableModel.

Abraço!

Criado 22 de outubro de 2010
Ultima resposta 25 de out. de 2010
Respostas 6
Participantes 2