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

0 respostas
H

Galera boa tarde!

Estou aprendendo JAVA e estou com um problema que parece ser tranquilo, mas não consegui identificar.

O problema no meu código, onde preciso pegar as informações do meu banco MySQL e colocar numa JTABLE que está funcionando, mas está dando erro.
Com o código abaixo estou conseguindo preencher as informações na tabela, mas está apresentando esse erro:

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

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

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

at View.JConsulta_Produto.preencherTabela(JConsulta_Produto.java:327)

at View.JConsulta_Produto.jbAtualizarActionPerformed(JConsulta_Produto.java:174)

at View.JConsulta_Produto.access$000(JConsulta_Produto.java:24)

at View.JConsulta_Produto$1.actionPerformed(JConsulta_Produto.java:122)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

at javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:308)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)

at java.awt.Component.processMouseEvent(Component.java:6535)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)

at java.awt.Component.processEvent(Component.java:6300)

at java.awt.Container.processEvent(Container.java:2236)

at java.awt.Component.dispatchEventImpl(Component.java:4891)

at java.awt.Container.dispatchEventImpl(Container.java:2294)

at java.awt.Component.dispatchEvent(Component.java:4713)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)

at java.awt.Container.dispatchEventImpl(Container.java:2280)

at java.awt.Window.dispatchEventImpl(Window.java:2750)

at java.awt.Component.dispatchEvent(Component.java:4713)

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

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.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)

at java.awt.EventQueue$4.run(EventQueue.java:731)

at java.awt.EventQueue$4.run(EventQueue.java:729)

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

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

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

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)

CONSTRUÍDO COM SUCESSO (tempo total: 2 minutos 50 segundos)

Criei uma classe modelo para preenchimento da minha tabela que deriva de uma (AbstractTableModel).

package Data;

import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;

public class ModeloTabela extends AbstractTableModel{

private ArrayList linhas=null;

private String[]colunas=null;
public ModeloTabela(ArrayList lin, String[]col) {
    setLinhas(lin);
    setColunas(col);
}
public ArrayList getLinhas(){
    return linhas;
}

public final void setLinhas(ArrayList dados){
    linhas=dados;
}

public String [] getColunas(){
    return colunas;
}
public final void setColunas(String[]nomes){
    colunas=nomes;
}
public int getColumnCount(){
    return colunas.length;
}
public int getRowCount(){
    return linhas.size();
}
public String getColumnName(int numCol){
    return colunas[numCol];
}
public Object getValueAt(int numLin, int numCol){
Object[] linha = (Object[])getLinhas().get(numLin);
return linha[numCol];
}

}

Método de preenchimento da tabela:

public void preencherTabela(){
ArrayList dados = new ArrayList();

String[] colunas ={"Código","Artista","Albúm","Valor","Localização","Gravadora","Quantidade","Status"}; 
Connection connection = new ConnectionFactory().getConnection();
        

      try{
      String consulta = "SELECT * FROM mimosa_db.cd order by cod";
        PreparedStatement stConsulta = connection.prepareStatement(consulta);
        ResultSet result = stConsulta.executeQuery();
        result.first();
           
          do{
           
 
               
    String codigo=result.getString("cod");
    String artista=result.getString("artista");
    String album=result.getString("album");
    Double valor= result.getDouble("Valor");
    String localizacao=result.getString("localizacao");
    String gravadora=result.getString("gravadora");
    String quantidade=result.getString("quantidade");
    int status=result.getInt("status");
            
            
            if(status==1){
           
           String statusNovo;
           statusNovo="Disponível";
           dados.add(new Object[]{codigo,artista,album,valor,localizacao,gravadora,quantidade,statusNovo}); 
       
            }else if (status==2){
                
           String statusNovo;
           statusNovo="Vendido";
           dados.add(new Object[]{codigo,artista,album,valor,localizacao,gravadora,quantidade,statusNovo}); 
       
                }
            //dados.add(obj);
          
               
    } while(result.next());
      
         }catch(SQLException ex) {
        JOptionPane.showMessageDialog(null, "Ocorreu um erro: "+ex.getMessage());
        }        

       
       ModeloTabela modelo = new ModeloTabela(dados, colunas);
       
       jtabela_cd.setModel(modelo);
       jtabela_cd.getColumnModel().getColumn(0).setPreferredWidth(80);
       jtabela_cd.getColumnModel().getColumn(0).setResizable(false);
               
       jtabela_cd.getColumnModel().getColumn(1).setPreferredWidth(80);
       jtabela_cd.getColumnModel().getColumn(1).setResizable(false);
       
       jtabela_cd.getColumnModel().getColumn(2).setPreferredWidth(80);
       jtabela_cd.getColumnModel().getColumn(2).setResizable(false);
       
       jtabela_cd.getColumnModel().getColumn(3).setPreferredWidth(80);
       jtabela_cd.getColumnModel().getColumn(3).setResizable(false);
       
       jtabela_cd.getColumnModel().getColumn(4).setPreferredWidth(80);
       jtabela_cd.getColumnModel().getColumn(4).setResizable(false);
       
       jtabela_cd.getColumnModel().getColumn(5).setPreferredWidth(80);
       jtabela_cd.getColumnModel().getColumn(5).setResizable(false);
       
       jtabela_cd.getColumnModel().getColumn(6).setPreferredWidth(80);
       jtabela_cd.getColumnModel().getColumn(6).setResizable(false);
       
       jtabela_cd.getColumnModel().getColumn(7).setPreferredWidth(80);
       jtabela_cd.getColumnModel().getColumn(7).setResizable(false);
       
       jtabela_cd.getColumnModel().getColumn(8).setPreferredWidth(80);
       jtabela_cd.getColumnModel().getColumn(8).setResizable(false);
         
       jtabela_cd.getTableHeader().setReorderingAllowed(false);
       jtabela_cd.setAutoResizeMode(jtabela_cd.AUTO_RESIZE_OFF);
       jtabela_cd.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
       
        
     }
Criado 13 de outubro de 2015
Respostas 0
Participantes 1