Erro no TableModel

Olá a todos!

Está gerando o seguinte erro:


09:42:45,522Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2
	at tableModel.MyTableModelAnimal.isCellEditable(MyTableModelAnimal.java:76)
	at javax.swing.JTable.isCellEditable(Unknown Source)
	at javax.swing.JTable.editCellAt(Unknown Source)
	at javax.swing.plaf.basic.BasicTableUI$Handler.adjustSelection(Unknown Source)
	at javax.swing.plaf.basic.BasicTableUI$Handler.mousePressed(Unknown Source)
	at java.awt.AWTEventMulticaster.mousePressed(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

Eis a classe:


package tableModel;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.swing.table.AbstractTableModel;

import javaBeans.Animal;
import javaBeans.Especie;
import javaBeans.Proprietario;
import javaBeans.Raca;

public class MyTableModelAnimal extends AbstractTableModel{
	

	    private static final long serialVersionUID = 1L;
	    private ArrayList linhas;
	    private String[] colunas;
	    boolean [] colsEdicao;
	
	    public MyTableModelAnimal(ArrayList linhas, String[] colunas, boolean [] edicao){
		  
	    	
	    	this.linhas = linhas;
		    this.colunas = colunas;
		    this.colsEdicao = edicao;
	   }
	
	   public int getColumnCount(){
		return colunas.length;
	  }
	
	  public int getRowCount(){
		return linhas.size();
	  }
	
	  public Object getValueAt(int rowIndex, int columnIndex){
		Animal animal = (Animal) linhas.get(rowIndex);
	
		
		switch(columnIndex) {
			case 0: return animal.getNumInterno();
			case 1: return animal.getNumExterno();
			case 2: return animal.getSexo();
			case 3: return animal.getDataNascimento();
			case 4: return animal.getEspecie();
			case 5: return animal.getNomeMae();
			case 6: return animal.getNomePai();
			case 7: return animal.getProprietario();
			case 8: return animal.getRaca();
			case 9: return animal.getTipo();
		    case 10: return animal.getFinalidade().getDoadorEmbriao();
		    case 11: return animal.getFinalidade().getDoadorOvocito();
			case 12: return animal.getFinalidade().getDoadorSemen();
		    case 13: return animal.getFinalidade().getProdutoFIV();
		    case 14: return animal.getFinalidade().getEspeficicarFIV();
		    case 15: return animal.getFinalidade().getProdutoIA();
			case 16: return animal.getFinalidade().getProdutoTE();
		    case 17: return animal.getFinalidade().getIrmaoGemeo();
		    case 18: return animal.getFinalidade().getOutros();
		    case 19: return animal.getFinalidade().getEspeficificarOutros();
					    
		    
		}
		return null;
		 
	 }
	 
	  public Object getValue(int rowIndex){
         return linhas.get(rowIndex);
      }
      
   
      public boolean isCellEditable(int rowIndex, int columnIndex){
         return colsEdicao[columnIndex];
      }
     
     public void setValueAt(Object value, int rowIndex, int columnIndex){
      Animal  animal = (Animal) linhas.get(rowIndex);
      
      animal.setNumInterno((String) value);
      animal.setNumExterno((String) value);
      animal.setSexo((String) value);
      animal.setDataNascimento((Date) value);
      animal.setEspecie((Especie) value);
      animal.setNomeMae((String) value);
      animal.setNomePai((String) value);
      animal.setProprietario((Proprietario) value);
      animal.setRaca((Raca) value);
      animal.setTipo((String) value);
      animal.getFinalidade().setDoadorEmbriao((String) value);
      animal.getFinalidade().setDoadorOvocito((String) value);
      animal.getFinalidade().setDoadorSemen((String) value);
      animal.getFinalidade().setProdutoFIV((String) value);
      animal.getFinalidade().setEspeficicarFIV((String) value);
      animal.getFinalidade().setProdutoIA((String) value);
      animal.getFinalidade().setProdutoTE((String) value);
      animal.getFinalidade().setIrmaoGemeo((String) value);
      animal.getFinalidade().setOutros((String) value);
      animal.getFinalidade().setEspeficificarOutros((String) value);
      
      
      
      fireTableCellUpdated(rowIndex,columnIndex);
    }
    

  }

Não sei porquê está gerando esse erro. Alguém pode me ajudar?

Até mais

Patty

Olá…

O problema está neste método:

 public boolean isCellEditable(int rowIndex, int columnIndex){
          return colsEdicao[columnIndex];
       }

Alguém pode me dizer pq gera esse erro?

Até mais

Patty :smiley:

Este erro: 09:42:45,522Exception in thread “AWT-EventQueue-0” java.lang.ArrayIndexOutOfBoundsException: 2 quer dizer que foi acessado um índice ilegal no array. Ou este índice é negativo ou maior que o tamanho do array.

É importante lembrar que um array de tamanho 5 começa no índice 0 e termina no 4…