Erro ao Lista dados num JTable

4 respostas
java
meyer

Boa noite,
Estou tentando listar dados em uma JTable, mas ao executar o código o mesmo nem abre e aparece o seguinte erro abaixo.
Estou IDE NetBeans e banco Sql Server

Exception in thread AWT-EventQueue-0 java.lang.ArrayIndexOutOfBoundsException: 0 >= 0

at java.util.Vector.elementAt(Vector.java:474)

at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:294)

at visao.telaCadastro.PreencherTabela(telaCadastro.java:550)

at visao.telaCadastro.(telaCadastro.java:33)

at visao.telaCadastro$8.run(telaCadastro.java:601)

at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)

at java.awt.EventQueue.access$500(EventQueue.java:97)

at java.awt.EventQueue$3.run(EventQueue.java:709)

at java.awt.EventQueue$3.run(EventQueue.java:703)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

abaixo meu método.

public void PreencherTabela(String Sql){

ArrayList dados = new ArrayList();
    String [] colunas = new String []{"Codigo","Descricao","Tipo","Quantidade","Prateleira","Coluna","Medida","Situacao"};
    conex.conexao();
    conex.executaSql(Sql);

    try{
        conex.rs.first();            
        do{
            dados.add(new Object[]{conex.rs.getInt("codMaterial"),conex.rs.getString("descMaterial"),conex.rs.getString("tipoMaterial"),conex.rs.getString("quantidadeMaterial"),conex.rs.getString("PrateleiraMaterial"),conex.rs.getString("ColunaPrateleiraMaterial"),conex.rs.getString("medidaMaterial"),conex.rs.getString("situacaoMaterial")});
            }while(conex.rs.next());
        
    }catch(SQLException ex){
        JOptionPane.showMessageDialog(rootPane, "Erro ao preencher a tabela !\n Erro: " + ex);        
}
    ModeloTabela modelo = new ModeloTabela(dados, colunas);
    
    jTableCadMaterial.getColumnModel().getColumn(0).setPreferredWidth(23);
    jTableCadMaterial.getColumnModel().getColumn(0).setResizable(false);
    jTableCadMaterial.getColumnModel().getColumn(1).setPreferredWidth(180);
    jTableCadMaterial.getColumnModel().getColumn(1).setResizable(false);
    jTableCadMaterial.getColumnModel().getColumn(2).setPreferredWidth(80);
    jTableCadMaterial.getColumnModel().getColumn(2).setResizable(false);
    jTableCadMaterial.getColumnModel().getColumn(3).setPreferredWidth(80);
    jTableCadMaterial.getColumnModel().getColumn(3).setResizable(false);
    jTableCadMaterial.getColumnModel().getColumn(4).setPreferredWidth(80);
    jTableCadMaterial.getColumnModel().getColumn(4).setResizable(false);
    jTableCadMaterial.getColumnModel().getColumn(5).setPreferredWidth(80);
    jTableCadMaterial.getColumnModel().getColumn(5).setResizable(false);
    jTableCadMaterial.getColumnModel().getColumn(6).setPreferredWidth(80);
    jTableCadMaterial.getColumnModel().getColumn(6).setResizable(false);
    jTableCadMaterial.getColumnModel().getColumn(7).setPreferredWidth(80);
    jTableCadMaterial.getColumnModel().getColumn(7).setResizable(false);
    jTableCadMaterial.getTableHeader().setReorderingAllowed(false);
    jTableCadMaterial.setAutoResizeMode(jTableCadMaterial.AUTO_RESIZE_OFF); // A tabela não pode ser reposicionada
    jTableCadMaterial.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    
    conex.desconectar();
}

aqui eu executo o select

public telaCadastro() {

initComponents();

PreencherTabela(select * from tblCadastroMaterial order by descMaterial);

}

4 Respostas

A

Verifica se a jTable tem o mesmo número de colunas do que os argumentos.
Você criou seu próprio Model da jTable né?
O erro está acontecendo no seu array, verifica como você está recebendo esses argumentos.
Pois, você passa um array de 8 posições, e parece que estoura.

meyer

Eu criei meu próprio Model da JTable sim.
Já conferir varias vezes e não acho onde esta o erro.
O código é o que postei acima.
Se você ou mais alguém puder ajudar fico agradecido.

meyer

Bom dia,
Alguém poderia me ajudar nessa questão, já tentei varias ideias encontradas na net mas nenhuma funcionou.

pmlm

Aposto que a linha 550 é esta

jTableCadMaterial.getColumnModel().getColumn(0).setPreferredWidth(23);

e que jTableCadMaterial não tem qualquer coluna.

Criado 31 de março de 2016
Ultima resposta 6 de abr. de 2016
Respostas 4
Participantes 3