olá pessoal estou com um projeto de clinica médica e até postei um erro aqui no forum que gracas a deus foi resolvido por Jailson. Só que agora to tentando resolver um 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:
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?