Javafree
Página Inicial do Fórum > Java Básico

Erro ao iniciar form com jtable



Criar novo tópico   Responder tópico


  1. fagner693
    Posts:3


    Comment Arrow

    Publicado em: 31/07/2016 16:32:38

    olá pessoal estou com um projeto de clinica médica que ta tendo um problema com 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:

    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?



  1. staroski
    Posts:4599


    Comment Arrow

    Publicado em: 01/08/2016 10:27:03


    _________________

    Ricardo Artur Staroski, OCP-JP
    Blumenau - SC
    Faço seu trabalho Java,
    clique aqui

    Acesse http://www.guj.com.br/



  1. fagner693
    Posts:3


    Comment Arrow

    Publicado em: 01/08/2016 17:47:01

    [quote="staroski"]



    Staroski muito obrigado amigo serviu muito essa dica



  1. Relacionados