Update + select ERROR

ola, tenho um metodo que atualiza uma tabela com os dados do banco de dados!
funciona perfeitamente!

agora eu tenho um metodo que faz um update, tb esta funcionando certinho
porem apos fazer esse update, quando eu uso o metodo que atualiza a tabela (que faz um select) da erro.
e se apos esse erro eu tento novamente atualizar a tabela, ele atualiza e nao da erro, ou seja,
soh da erro a primeira vez que eh feita a tentativa, apos funciona perfeitamente

alguem sabe algo sobre isso??

Vc está tendo problema em atualizar dados na tabela, ou realizar uma consulta? (Select é um comando para consulta no banco)
Poste seu código para darmos uma olhada.

Abraços.

resumindo: o metodo atualizar tabela, e fazer uma inserção, deletar ou update tb da certo
ocorre o erro quando faço um insert,update ou delete e em seguida tento um atualizar tabela novamente.
segue os codigos:
classe conexao:

package OutrasClasses;
import java.sql.*;
import javax.swing.JOptionPane;
/**
 *
 * @author Cesar Schutz
 */
public class Conexao {
    
    public static Connection con = null;
    
    public static void conectar(){
        try{
            Class.forName("org.firebirdsql.jdbc.FBDriver");
            con = DriverManager.getConnection("jdbc:firebirdsql:localhost/3050:C:\\teste\\CONRAD.FDB", "SYSDBA", "masterkey");
        }catch(ClassNotFoundException e){
            JOptionPane.showMessageDialog(null, "erro no drive: "+e);
        }catch(SQLException ex){
            JOptionPane.showMessageDialog(null, "erro na conexao: "+ex);
        }
        
    }

classe onde possuo os metodos de comando sql

package OutrasClasses;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import jinternalframe.cadastros.JIClassesDeExames;

/**
 *
 * @author Cesar Schutz
 */
public class ObjetosClassesExames {
    
    int cod;
    String usuario,data,ref,descricao;

    get's e set's dos atributos...    

    public ResultSet getConsultar() throws SQLException{
        PreparedStatement stmtQuery = Conexao.con.prepareStatement("select * from tb_classesexames order by descricao");
        ResultSet resultSet = stmtQuery.executeQuery();
        return resultSet;
    }
    
    public void setCadastrar(){
        String sql = "insert into TB_CLASSESEXAMES (descricao,operadora,dat,referencia) values(?,?,?,?)";
        try{
            PreparedStatement stmt = Conexao.con.prepareStatement(sql);
            stmt.setString(1, getDescricao());
            stmt.setString(2, getUsuario());
            stmt.setString(3, getData());
            stmt.setString(4, getRef());
            stmt.executeUpdate();
            stmt.close();
            JOptionPane.showMessageDialog(null, "Classe de Exame salva com sucesso!\n\nSalvo por: "+getUsuario()+"\nNo dia: "+getData()+"\nRef.: "+getRef()+"\nDescrição: "+getDescricao());
            Conexao.con.close();
        }catch(SQLException e){
            JOptionPane.showMessageDialog(null, "Erro ao tentar fazer conexão com o banco de dados, contate o administrador.\nErro: "+e);
        }
    }

classe que chamo os metodos da duas classes anteriores

public void atualizarTabela(){     
        
        try{
            Conexao.conectar();
            ObjetosClassesExames objetoClasseExame = new ObjetosClassesExames();           
            ResultSet resultSet = objetoClasseExame.getConsultar();
            //zerando toda a tabela (deixado-a vazia)
            ((DefaultTableModel) jTable1.getModel()).setNumRows(0);
            jTable1.updateUI();
            while(resultSet.next()){
                //colocando dados na tabela
                DefaultTableModel modelo = (DefaultTableModel) jTable1.getModel();
                modelo.addRow(new String[] {Integer.toString(resultSet.getInt("cod")),resultSet.getString("referencia"),resultSet.getString("descricao")});
                //colocando dados nos objetos
                ObjetosClassesExames classeExame = new ObjetosClassesExames();
                classeExame.setCod(resultSet.getInt("cod"));
                classeExame.setRef(resultSet.getString("referencia"));
                classeExame.setUsuario(resultSet.getString("operadora"));
                classeExame.setData(resultSet.getString("dat"));
                classeExame.setDescricao(resultSet.getString("descricao"));
                classesExames.add(classeExame);
            }
        }catch(SQLException e){
            JOptionPane.showMessageDialog(null, "Erro na conexao com o banco, contate o Adminitrador!\nErro: "+e);
        }
        
    }

public void botaoSalvarRegistro(){
        //fazeendo a inserção no banco
        Conexao.conectar();
        ObjetosClassesExames objetoClassesExames = new ObjetosClassesExames();
        objetoClassesExames.setDescricao(jTDescricao.getText().toUpperCase());
        objetoClassesExames.setUsuario(jTUsuario.getText());
        objetoClassesExames.setData(jTData.getText());
        objetoClassesExames.setRef(jTRef.getText());
        objetoClassesExames.setCadastrar();      
        //atualizando tabela
        atualizarTabela();

o problema esta nesse ultimo codigo, quando abro a janela e executo o metodo atualizarTabela, ele atualiza sem problemas…
porem quando executo o metodo botaoSalvarRegistro ele salva o registro mas na hora de executar o atualizarTabela, ele da o seguinte erro:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
	at java.util.Vector.elementData(Vector.java:730)
	at java.util.Vector.elementAt(Vector.java:473)
	at javax.swing.table.DefaultTableModel.getValueAt(DefaultTableModel.java:649)
	at javax.swing.JTable.getValueAt(JTable.java:2720)
	at jinternalframe.cadastros.JIClassesDeExames$1.valueChanged(JIClassesDeExames.java:96)
	at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:184)
	at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:164)
	at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:211)
	at javax.swing.DefaultListSelectionModel.removeIndexInterval(DefaultListSelectionModel.java:677)
	at javax.swing.JTable.tableRowsDeleted(JTable.java:4512)
	at javax.swing.JTable.tableChanged(JTable.java:4415)
	at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:296)
	at javax.swing.table.AbstractTableModel.fireTableRowsDeleted(AbstractTableModel.java:261)
	at javax.swing.table.DefaultTableModel.setNumRows(DefaultTableModel.java:321)
	at jinternalframe.cadastros.JIClassesDeExames.atualizarTabela(JIClassesDeExames.java:52)
	at jinternalframe.cadastros.JIClassesDeExames.botaoSalvarRegistro(JIClassesDeExames.java:197)
	at jinternalframe.cadastros.JIClassesDeExames.jBSalvarRegistroActionPerformed(JIClassesDeExames.java:576)
	at jinternalframe.cadastros.JIClassesDeExames.access$1500(JIClassesDeExames.java:29)
	at jinternalframe.cadastros.JIClassesDeExames$13.actionPerformed(JIClassesDeExames.java:372)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6504)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
	at java.awt.Component.processEvent(Component.java:6269)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4860)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4686)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Window.dispatchEventImpl(Window.java:2713)
	at java.awt.Component.dispatchEvent(Component.java:4686)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
	at java.awt.EventQueue.access$000(EventQueue.java:101)
	at java.awt.EventQueue$3.run(EventQueue.java:666)
	at java.awt.EventQueue$3.run(EventQueue.java:664)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:680)
	at java.awt.EventQueue$4.run(EventQueue.java:678)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

alguem ae sabe o que pode estar acontecendo?
fui forçar o erro agora e deu certo, tentei novamente sem mecher no codigo e deu o erro!
nao sei o que pode ser =/

apos alguns testes de mesa descobri que o erro esta quando eu zero as linhas da minha tabela!!

DefaultTableModel modelo = (DefaultTableModel) jTable1.getModel();
modelo.setNumRows(0);

na linha modelo.setNumRowns(0) é que da o problema

na primeira vez nao ocorre problema, acho que é pq o modelo ja vem com nenhuma linha!
mas na segunda vez da erro =///

alguem sbe alguma outra maneira de zerar a tabela???
creio que resolvendo isso estara resolvido o problema