Ir ao conteúdo
  • Cadastre-se

Erro ao iniciar form com jtable


Ir à solução Resolvido por Fagner Goncalves,

Posts recomendados

olá pessoal estou com um projeto de clinica médica que contém uma jtable, quando o form inicializa a exception diz o seguinte "ERRO AO PREENCHER ARRAYLIST RESULTSET NÃO ESTÁ POSICIONADO CORRETAMENTE,TALVEZ VOCÊ PRECISE CHAMAR NEXT" e tive lendo na api do java que esse erro retorna false quando nao tem uma linha na tabela ,ou seja nenhum cadastro.Tem como resolver isso o código refernte a jtable disponibilizo abaixo

CLASSE MODELO TABELA:

package Atributos;

import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
public final class ModeloTabela extends AbstractTableModel{
    
    
    private ArrayList linhas = null;
    private String[] colunas = null;
    
    public ModeloTabela(ArrayList lin,String[] col){
        setLinhas(lin);
        setColunas(col);
        
    }

    /**
     * @return the linhas
     */
    public ArrayList getLinhas() {
        return linhas;
    }

    /**
     * @param linhas the linhas to set
     */
    public void setLinhas(ArrayList linhas) {
        this.linhas = linhas;
    }

    /**
     * @return the colunas
     */
    public String[] getColunas() {
        return colunas;
    }

    /**
     * @param colunas the colunas to set
     */
    public void setColunas(String[] colunas) {
        this.colunas = colunas;
    }
    
    @Override
    public int getColumnCount(){//conta o número de colunas
        
        return colunas.length;
    }
    
    @Override
    public int getRowCount(){//conta o número de linhas
       
        return linhas.size();
    }
    
    @Override
    public String getColumnName(int numCol){//pega o nome da coluna
        
        return colunas[numCol];//retorna quantas colunas existem
    }
    
    @Override
    public Object getValueAt(int numLin,int numCol){//adiciona as linhas da tabela recebendo a qtd de linhas
        
        Object[] linha = (Object[])getLinhas().get(numLin);
        return linha[numCol];
    }
    
    
    

}

METODO PREENCHER TABELA:

 public void prencherTabela(String Sql){
       ArrayList dados = new ArrayList();
       String[] colunas = new String[]{"ID","Nome do médico","número do crm","Situação","Tipo de Inscrição","Especialidade","Área de atuação"};//colunas da tabela
       conect.conexao();
       
       
        try {
            conect.executarSql(Sql);
            conect.rs.first();//seta o primeiro resultado da pesquisa
            do{
                dados.add(new Object[]{conect.rs.getInt("cod_medico"),conect.rs.getString("nome_medico"),
                conect.rs.getString("numero_crm"),conect.rs.getString("situacao_medico"),
                conect.rs.getString("tipo_inscricao_medico"),conect.rs.getString("especialidade_medico"),
                conect.rs.getString("area_atuacao_medico")});
                
            }while(conect.rs.next());//faz um lupo enquanto houver dados
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Erroa ao preencher arrayList\n" + ex.getMessage());
        }
        
        ModeloTabela tabela = new ModeloTabela(dados, colunas);//passando como parâmetro a qtd linhas e qtd colunas
        jTablemedico.setModel(tabela);
        jTablemedico.getColumnModel().getColumn(0).setPreferredWidth(10);//coluna e sua largura e zero por causa do primeiro registro
        jTablemedico.getColumnModel().getColumn(0).setResizable(true);
        jTablemedico.getColumnModel().getColumn(1).setPreferredWidth(10);
        jTablemedico.getColumnModel().getColumn(1).setResizable(true);
        jTablemedico.getColumnModel().getColumn(2).setPreferredWidth(10);
        jTablemedico.getColumnModel().getColumn(2).setResizable(true);
        jTablemedico.getColumnModel().getColumn(3).setPreferredWidth(10);
        jTablemedico.getColumnModel().getColumn(3).setResizable(true);
        jTablemedico.getColumnModel().getColumn(4).setPreferredWidth(10);
        jTablemedico.getColumnModel().getColumn(4).setResizable(true);
        jTablemedico.getColumnModel().getColumn(5).setPreferredWidth(10);
        jTablemedico.getColumnModel().getColumn(5).setResizable(true);
        jTablemedico.getColumnModel().getColumn(6).setPreferredWidth(10);
        jTablemedico.getColumnModel().getColumn(6).setResizable(true);
        jTablemedico.getTableHeader().setReorderingAllowed(false);//não poderá reordenar os cabeçalhos da tabela
        jTablemedico.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
        jTablemedico.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        
       
       conect.desconecta();
   }\


então acho que o erro acontece dentro do loop while pois tem um next lá. Só que quando inicio uma tabela sem registros ele chama a exception, qual parâmetro uso para resolver isso?

Link para o comentário
Compartilhar em outros sites

  • Solução
Em 01/08/2016 às 08:48, Fagner Goncalves disse:

olá pessoal estou com um projeto de clinica médica que contém uma jtable, quando o form inicializa a exception diz o seguinte "ERRO AO PREENCHER ARRAYLIST RESULTSET NÃO ESTÁ POSICIONADO CORRETAMENTE,TALVEZ VOCÊ PRECISE CHAMAR NEXT" e tive lendo na api do java que esse erro retorna false quando nao tem uma linha na tabela ,ou seja nenhum cadastro.Tem como resolver isso o código refernte a jtable disponibilizo abaixo

CLASSE MODELO TABELA:


package Atributos;

import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
public final class ModeloTabela extends AbstractTableModel{
    
    
    private ArrayList linhas = null;
    private String[] colunas = null;
    
    public ModeloTabela(ArrayList lin,String[] col){
        setLinhas(lin);
        setColunas(col);
        
    }

    /**
     * @return the linhas
     */
    public ArrayList getLinhas() {
        return linhas;
    }

    /**
     * @param linhas the linhas to set
     */
    public void setLinhas(ArrayList linhas) {
        this.linhas = linhas;
    }

    /**
     * @return the colunas
     */
    public String[] getColunas() {
        return colunas;
    }

    /**
     * @param colunas the colunas to set
     */
    public void setColunas(String[] colunas) {
        this.colunas = colunas;
    }
    
    @Override
    public int getColumnCount(){//conta o número de colunas
        
        return colunas.length;
    }
    
    @Override
    public int getRowCount(){//conta o número de linhas
       
        return linhas.size();
    }
    
    @Override
    public String getColumnName(int numCol){//pega o nome da coluna
        
        return colunas[numCol];//retorna quantas colunas existem
    }
    
    @Override
    public Object getValueAt(int numLin,int numCol){//adiciona as linhas da tabela recebendo a qtd de linhas
        
        Object[] linha = (Object[])getLinhas().get(numLin);
        return linha[numCol];
    }
    
    
    

}

METODO PREENCHER TABELA:

 public void prencherTabela(String Sql){
       ArrayList dados = new ArrayList();
       String[] colunas = new String[]{"ID","Nome do médico","número do crm","Situação","Tipo de Inscrição","Especialidade","Área de atuação"};//colunas da tabela
       conect.conexao();
       
       
        try {
            conect.executarSql(Sql);
            conect.rs.first();//seta o primeiro resultado da pesquisa
            do{
                dados.add(new Object[]{conect.rs.getInt("cod_medico"),conect.rs.getString("nome_medico"),
                conect.rs.getString("numero_crm"),conect.rs.getString("situacao_medico"),
                conect.rs.getString("tipo_inscricao_medico"),conect.rs.getString("especialidade_medico"),
                conect.rs.getString("area_atuacao_medico")});
                
            }while(conect.rs.next());//faz um lupo enquanto houver dados
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Erroa ao preencher arrayList\n" + ex.getMessage());
        }
        
        ModeloTabela tabela = new ModeloTabela(dados, colunas);//passando como parâmetro a qtd linhas e qtd colunas
        jTablemedico.setModel(tabela);
        jTablemedico.getColumnModel().getColumn(0).setPreferredWidth(10);//coluna e sua largura e zero por causa do primeiro registro
        jTablemedico.getColumnModel().getColumn(0).setResizable(true);
        jTablemedico.getColumnModel().getColumn(1).setPreferredWidth(10);
        jTablemedico.getColumnModel().getColumn(1).setResizable(true);
        jTablemedico.getColumnModel().getColumn(2).setPreferredWidth(10);
        jTablemedico.getColumnModel().getColumn(2).setResizable(true);
        jTablemedico.getColumnModel().getColumn(3).setPreferredWidth(10);
        jTablemedico.getColumnModel().getColumn(3).setResizable(true);
        jTablemedico.getColumnModel().getColumn(4).setPreferredWidth(10);
        jTablemedico.getColumnModel().getColumn(4).setResizable(true);
        jTablemedico.getColumnModel().getColumn(5).setPreferredWidth(10);
        jTablemedico.getColumnModel().getColumn(5).setResizable(true);
        jTablemedico.getColumnModel().getColumn(6).setPreferredWidth(10);
        jTablemedico.getColumnModel().getColumn(6).setResizable(true);
        jTablemedico.getTableHeader().setReorderingAllowed(false);//não poderá reordenar os cabeçalhos da tabela
        jTablemedico.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
        jTablemedico.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        
       
       conect.desconecta();
   }


então acho que o erro acontece dentro do loop while pois tem um next lá. Só que quando inicio uma tabela sem registros ele chama a exception, qual parâmetro uso para resolver isso?

consegui a resposta em outro fórum é só trocar o do while por while:) 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!