Ir ao conteúdo
  • Cadastre-se
Fagner Goncalves

RESOLVIDO Erro ao iniciar form com jtable

Recommended Posts

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?

Editado por Simon Viegas
Inserir tag CODE no código

Compartilhar este post


Link para o post
Compartilhar em outros sites
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:) 

Editado por Simon Viegas
Inserir tag CODE no código

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×