Exibição incompleta no JTable

Olá,

Sei que pode parecer mais um tópico sobre exibição de dados vindo de um determinado BD para um Jtable (e realmente é) mas mesmo futucando os vários posts a respeito não vi nenhum que realmente me esclarecesse diante do meu código. Todos os exemplos vistos antes referem-se a aplicação desta exibição quando se tratando em uma única camada, por isso que trago-lhe meu dilema.

Vamos ao caso: os dados armazenados no vetor estão corretos mas não estão sendo exibidas as linhas no JTable. É mostrada apelas uma, e com o primeiro nome da consulta vinda do BD, quando feita uma consulta sem referências.

Meu código está bem dividido, como manda o figurino (dao, business, view, etc…) e é exatamente nesta passagem/exibição de dados é que estou travado e espero que possam me ajudar neste problema, que está me deixando um pouco mais careca (heheeh)…

Vamos aos códigos dos trechos.

view

private void jButtonBuscarActionPerformed(java.awt.event.ActionEvent evt) {

        DefaultTableModel modeloTabela = (DefaultTableModel) jTable.getModel();

        jTable.setModel(modeloTabela);

        modeloTabela.setRowCount(0);

        jTable.setModel(modeloTabela);

        try {
            String nome = jTextFieldBusca.getText();
            ArquivoMortoBS arquivoMortobs = new ArquivoMortoBS();
            Iterator vectorBusca = arquivoMortobs.consultar(nome);
            if (vectorBusca.hasNext()) {
                ArquivoMorto busca = (ArquivoMorto) vectorBusca.next();
                adicionarLinhaTabela(busca);
            } else {
                JOptionPane.showMessageDialog(null, "Funcionário não encontrado");
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }

    }



public void adicionarLinhaTabela(ArquivoMorto morto) {
        String Nome = morto.getNome();
        String Admissao = morto.getDataAdmissao();
        String Demissao = morto.getDataDemissao();
        String Empresa = morto.getEmpresa();
        String Caixa = morto.getCaixa();

        DefaultTableModel modeloTadela = (DefaultTableModel) jTable.getModel();

        String[][] novaLinha = new String[][]{
            {Nome, Admissao, Demissao, Empresa, Caixa}
        };

        modeloTadela.addRow(novaLinha);

        jTable.setModel(modeloTadela);

        jTable.setValueAt(Nome, jTable.getRowCount() - 1, 0);
        jTable.setValueAt(Admissao, jTable.getRowCount() - 1, 1);
        jTable.setValueAt(Demissao, jTable.getRowCount() - 1, 2);
        jTable.setValueAt(Empresa, jTable.getRowCount() - 1, 3);
        jTable.setValueAt(Caixa, jTable.getRowCount() - 1, 4);
        table1Linhas++;
    }

business

    public Iterator consultar(String nome) throws Exception {
        return arqMortoDAO.consultarFuncionario(nome);
    }

DAO

public Iterator consultarFuncionario(String nome) throws Exception {
        Vector busca = new Vector();
        try {
            String sql = null;
            dataBase = new ConexaoDB();
            conexao = dataBase.getConexao();

            if (nome == null || nome.equals("")) {
                sql = "SELECT nome, admissao, demissao, empresa, caixa FROM funcionario order by nome";
            } else {
                sql = "SELECT nome, admissao, demissao, empresa, caixa FROM funcionario where nome like '" + nome + "' order by nome";
            }

            Statement statement = conexao.createStatement();
            resultSet = statement.executeQuery(sql);

            while (resultSet.next()) {

                ArquivoMorto arqMorto = new ArquivoMorto();
                arqMorto.setNome(resultSet.getString("Nome"));
                arqMorto.setDataAdmissao(resultSet.getString("Admissao"));
                arqMorto.setDataDemissao(resultSet.getString("Demissao"));
                arqMorto.setEmpresa(resultSet.getString("Empresa"));
                arqMorto.setCaixa(resultSet.getString("Caixa"));

                busca.add(arqMorto);
            }
            resultSet.close();
        } catch (Exception exception) {
            throw new Exception("erro ao efetuar consulta :" + exception.getMessage());
        } finally {
            dataBase.fecharConexao();
        }
        return busca.iterator();
    }

Fiz vários testes e até onde pude perceber quando chamo o adicionarLinhaTabela ele só está sendo executado uma única vez, por isso só exibe uma linha e pronto. Já pesquisei algo sobre isso e tal mas não encontrei. Ou sou meio lontra e não estou pesquisando direito ou é algo mais do que citei.

Espero que as informações estejam claras e possam ajudar.

Desde já muito obrigado!

Ola, não sei se sou a pessoa ideal para lhe ajudar mas…:
eu meio que condeno o DefaultTableModel.
pesquise sobre ObjectTableModel, é oque há de mais prático e facil de usar depois de implementado.

Obrigado pela dica. Vou pesquisar a respeito!
:wink:

Dei uma estudada em DefaultTableModel, como recomendado, mas como estou engatinhando em desenvolvimento acabaram surgindo mais dúvidas. :frowning:

Não use DefaultTableModel. Você deve estudar como criar seu próprio TableModel.

Sem entender o TableModel completamente, fica impossível usar o JTable.

Além disso, poste dúvidas de inteface gráfica no fórum de interface gráfica. Tive que mover seu tópico.

Opa, obrigado ViniGodoy pela dica e desculpe por postar no fórum errado.

:smiley: