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);
}