Cara acho que meu problema e conseqüentemente minha dúvida está na estrutura, eu uso o Netbeans e pelo seu editor visual eu criei uma tabela com duas colunas, feito isso eu carrego dois métodos (um para redefinir o tamanho das colunas) e outro para definir um modelo para a tabela da seguinte forma:
public void setSizeTable(){
Grade.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
Grade.getColumnModel().getColumn(0).setPreferredWidth(170);
Grade.getColumnModel().getColumn(1).setPreferredWidth(15);
}
public DefaultTableModel getModel(){
modelo = (DefaultTableModel)Grade.getModel();
return modelo;
}
Assim quando o usuário clica em um botão eu vou adicionando linhas a essa tabela usando o modelo da seguinte forma:
public void addRow(int codigo, double peso, int maquina, int produto){
if(modelo.getRowCount() == 4 && contTable == 0){
for(int i = modelo.getRowCount() - 1; i >= 0; --i){
modelo.removeRow(i);
}
}
modelo.addRow(new Object[]{peso,
new Boolean(false),
codigo,
maquina,
produto});
contTable++;
}
Até aqui vai tudo muito bem, porém eu determinado momento ao clicar em um campo booleano dentro da tabela vai iniciar um processo onde eu preciso capturar todos os dados da linha com o booleano selecionado, é nisso que ocorre a excpetion, o código está abaixo:
for(int index = 0; index < modelo.getRowCount(); index++){
if(((Boolean)modelo.getValueAt(index, 1)).booleanValue()){
peso = (Double)modelo.getValueAt(index, 0);
codigo = (Integer)modelo.getValueAt(index, 2);
maquina = (Integer)modelo.getValueAt(index, 3);
produto = (Integer)modelo.getValueAt(index, 4);
}
}
Dispara a seguinte exception:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2 >= 2
at java.util.Vector.elementAt(Vector.java:432)
at javax.swing.table.DefaultTableModel.getValueAt(DefaultTableModel.java:622)
at br.com.alimentoswilson.gui.Main.GradeMouseClicked(Main.java:561)
at br.com.alimentoswilson.gui.Main.access$600(Main.java:36)
at br.com.alimentoswilson.gui.Main$11.mouseClicked(Main.java:396)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:212)
at java.awt.Component.processMouseEvent(Component.java:5491)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3901)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1778)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Ficou meio longo o post mas não to achando a minha falha.