Tenho uma jTable e estou tentando preencher ela com dados do banco de dados. O NetBeans nao acusa nenhum erro no código, mas quando tento abrir a tabela aparece esse erro:
Exception in thread “AWT-EventQueue-0” java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
** Ao final posto o erro completo **
Alguns trechos do código para que tenham uma melhor nocao do problema:
- Código na classe de conexao com o banco que executa o SQL:
public void executaSql(String sql){
try{
stm = con.createStatement(rs.TYPE_SCROLL_INSENSITIVE, rs.CONCUR_READ_ONLY);
rs = stm.executeQuery(sql);
}catch(SQLException ex){
JOptionPane.showMessageDialog(null, "Erro ao executar SQL \n " +ex.getMessage());
}
}
- Classe"Modelo" da tabela:
public class ModeloTabelaEnVerde extends AbstractTableModel {
private ArrayList linhas = null;
private String[] colunas = null;
public ModeloTabelaEnVerde (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;
}
// Metodo que conta o numero de colunas
public int getColumnCount(){
return colunas.length;
}
// Metodo que conta o numero de linhas do array
public int getRowCount() {
return linhas.size();
}
// Metodo que pega o nome da coluna
public String getColumName (int numCol){
return colunas[numCol];
}
// Metodo que recebe a quantidade de linhas da tabela
public Object getValueAt (int numLin, int numCol){
Object[] linha = (Object[]) getLinhas().get(numLin);
return linha[numCol];
}
}
- Classe onde está a tabela:
public void preencherTabela (String Sql){
ArrayList dados = new ArrayList();
String[] colunas = new String[] {“Comp”, “RCV”, “RTH”, “Fri”, “Per”, “Hum”, “Esp”, “An”, “Temp”};
conex.conectar();
conex.executaSql(Sql);
try{
conex.rs.first();
do{
dados.add(new Object[] {conex.rs.getDouble("compactabilidad_arena_verde"), conex.rs.getDouble("rcv_arena_verde"), conex.rs.getDouble("rth_arena_verde"), conex.rs.getDouble("friabilidad_arena_verde"), conex.rs.getDouble("permeabilidad_arena_verde"), conex.rs.getDouble("humedad_arena_verde"), conex.rs.getDouble("especimen_arena_verde"), conex.rs.getString("analista_arena_verde"), conex.rs.getDouble("temperatura_arena_verde")});
}while (conex.rs.next());
}catch (SQLException ex){
JOptionPane.showMessageDialog(null, "Erro ao preencher ArrayList \n " +ex.getMessage());
}
ModeloTabelaEnVerde modelo = new ModeloTabelaEnVerde (dados, colunas);
jTableArenaEnVerde.getColumnModel().getColumn(0).setPreferredWidth(25);
jTableArenaEnVerde.getColumnModel().getColumn(0).setResizable(false);
jTableArenaEnVerde.getColumnModel().getColumn(1).setPreferredWidth(25);
jTableArenaEnVerde.getColumnModel().getColumn(1).setResizable(false);
jTableArenaEnVerde.getColumnModel().getColumn(2).setPreferredWidth(25);
jTableArenaEnVerde.getColumnModel().getColumn(2).setResizable(false);
jTableArenaEnVerde.getColumnModel().getColumn(3).setPreferredWidth(25);
jTableArenaEnVerde.getColumnModel().getColumn(3).setResizable(false);
jTableArenaEnVerde.getColumnModel().getColumn(4).setPreferredWidth(25);
jTableArenaEnVerde.getColumnModel().getColumn(4).setResizable(false);
jTableArenaEnVerde.getColumnModel().getColumn(5).setPreferredWidth(25);
jTableArenaEnVerde.getColumnModel().getColumn(5).setResizable(false);
jTableArenaEnVerde.getColumnModel().getColumn(6).setPreferredWidth(25);
jTableArenaEnVerde.getColumnModel().getColumn(6).setResizable(false);
jTableArenaEnVerde.getColumnModel().getColumn(7).setPreferredWidth(25);
jTableArenaEnVerde.getColumnModel().getColumn(7).setResizable(false);
jTableArenaEnVerde.getColumnModel().getColumn(8).setPreferredWidth(25);
jTableArenaEnVerde.getColumnModel().getColumn(8).setResizable(false);
jTableArenaEnVerde.getTableHeader().setReorderingAllowed(false);
jTableArenaEnVerde.setAutoResizeMode(jTableArenaEnVerde.AUTO_RESIZE_OFF);
jTableArenaEnVerde.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
conex.desconectar();
}
É isso.Já procurei manuais, vídeos, fóruns gringos e nao encontrei nenhuma resposta. Alguma ideia o que posso fazer?