Error al eliminar filas de una tabla

//No puse los getter y setter de la clase Fletero, pero creo que con este codigo basta.

Problema: en el modelo de la tabla hice un metodo para eliminar filas, removeRow.
En la clase FrmFletero hice un metodo para eliminar todas las filas de la tabla, el método se llama
removeAllRows() básicamente este es su código:

public void removeAllRows(){
        while(model.getRowCount()>0){
                model.removeRow(0);
        }

En la clase FrmFletero tengo este métod que lo llamo en un boton de guardar que hace lo siguiente:
1.-Inserta un nuevo registro en la tabla fleteros de la Bd.
2.-Llamo a removeAllRows(Elimino todas las filas de la tabla)<<<== funciona Ok aquí
3.-LLamo a otro método que se llama refrescar y me pinta las filas en el jtable

El problema se da cuando en trato de editar un registro:
1.-Selecciono el registro y tomo el id del registro,
2.-Llamo el metodo que hace el update
3.-LLamo a removeAllRows <<====aqui me tira el error java.lang.ArrayIndexOutOfBoundsException: -1 y tengo que hacer 2 click para que se ejecuta la acción que acualizar.

Básicamente aquí dejo el método y más abajo las clases completas:

private JButton getJBGuardar() {
                if (jBGuardar == null) {
                        jBGuardar = new JButton();
                        jBGuardar.setLocation(new Point(380, 311));
                        jBGuardar.setText("Guardar");
                        jBGuardar.setSize(new Dimension(90, 35));
                        jBGuardar.addActionListener(new java.awt.event.ActionListener() {
                                public void actionPerformed(java.awt.event.ActionEvent e) {

                                                int codigo= Integer.parseInt(getJTCodigo().getText());
                                               
                                                Fletero fletero = new Fletero();
                                                fletero.setRazonsocial(getJTRazon().getText());
                                                fletero.setDireccion(getJTDireccion().getText());
                                                fletero.setChofer(getJTChofer().getText());
                                                fletero.setPlaca(getJTPlaca().getText());
                                               
                                                if (codigo>0){
                                                        fletero.setCodigo(codigo);
                                                        model.actualizaRegistro(fletero);
                                                        //System.out.println("LLAMAR A FUNCION ACTUALIZA");
                                                }else{
                                                        fletero.setCodigo(model.idNuevoRegistro());
                                                        model.guardarRegistro(fletero);
                                                        //System.out.println("LLAMAR A FUNCION GUARDARREGISTRO");
                                                }
                                                try {
                                                        //Aquí no me esta borrando todas las filas, solo falla cuando
                                                        //Selecciono una fila de la tabla, si no selecciono funciona
                                                        //Correctamnete
                                                        removeAllRows();
                                                        model.refrescarDatos();
                                                        enabledDisabled(false);
                                                        cleanJTextField();
                                                       
                                                } catch (Exception e2) {
                                                        // TODO: handle exception
                                                }

                                }
                        });
                }
                return jBGuardar;
        }

//Clases completas

package manager.empaque.view;

import javax.swing.JPanel;
import javax.swing.JDialog;
import java.awt.Dimension;
import javax.swing.JScrollPane;
import java.awt.Rectangle;

import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

//import manager.empaque.domain.Salario;
import manager.empaque.domain.Fletero;
import manager.empaque.model.FleteroModel;
//import manager.empaque.model.SalarioModel;

import java.awt.Point;
import java.util.Vector;
import java.awt.Font;

public class FrmFletero extends JDialog {

        private static final long serialVersionUID = 1L;
        private JPanel jContentPane = null;
        private JScrollPane jScrollPane = null;
        private JTable jTable = null;
        private JTextField jTRazon = null;
        private JTextField jTDireccion = null;
        private JLabel jLabel = null;
        private JLabel jLabel1 = null;
        private JButton jBEliminar = null;
        private JButton jBGuardar = null;
        private JButton jBCancelar = null;
        private JButton jBAgregar = null;
        private JButton jBEditar = null;
        private JButton jBCerrar = null;
        //Jamil cambiar la clase  por Puesto
        private FleteroModel model;
        private JTextField jTCodigo = null;
        private JLabel jLabel3 = null;
        private JTextField jTChofer = null;
        private JTextField jTPlaca = null;
        private JLabel jLabel2 = null;
        private JLabel jLabel4 = null;
        /**
         * @param owner
         */

        public FrmFletero(java.awt.Frame parent, boolean modal) {
                super(parent,true);
                initialize();
                enabledDisabled(false);
        }

        /**
         * This method initializes this
         *
         * @return void
         */

        private void initialize() {
                this.setSize(624, 500);
                this.setContentPane(getJContentPane());
        }

        /**
         * This method initializes jContentPane
         *
         * @return javax.swing.JPanel
         */

        private JPanel getJContentPane() {
                if (jContentPane == null) {
                        jLabel4 = new JLabel();
                        jLabel4.setText("Placa:");
                        jLabel4.setSize(new Dimension(121, 24));
                        jLabel4.setLocation(new Point(255, 212));
                        jLabel2 = new JLabel();
                        jLabel2.setText("Chofer:");
                        jLabel2.setSize(new Dimension(121, 24));
                        jLabel2.setLocation(new Point(255, 166));
                        jLabel3 = new JLabel();
                        jLabel3.setBounds(new Rectangle(134, 12, 277, 45));
                        jLabel3.setFont(new Font("Dialog", Font.BOLD, 24));
                        jLabel3.setText("Catalago de fleteros");
                        jLabel1 = new JLabel();
                        jLabel1.setText("Dirección:");
                        jLabel1.setLocation(new Point(255, 120));
                        jLabel1.setSize(new Dimension(121, 24));
                        jLabel = new JLabel();
                        jLabel.setText("Razón social:");
                        jLabel.setLocation(new Point(255, 74));
                        jLabel.setSize(new Dimension(123, 24));
                        jContentPane = new JPanel();
                        jContentPane.setLayout(null);
                        jContentPane.add(getJScrollPane(), null);
                        jContentPane.add(getJTRazon(), null);
                        jContentPane.add(getJTDireccion(), null);
                        jContentPane.add(jLabel, null);
                        jContentPane.add(jLabel1, null);
                        jContentPane.add(getJBEliminar(), null);
                        jContentPane.add(getJBGuardar(), null);
                        jContentPane.add(getJBCancelar(), null);
                        jContentPane.add(getJBAgregar(), null);
                        jContentPane.add(getJBEditar(), null);
                        jContentPane.add(getJBCerrar(), null);
                        jContentPane.add(getJTCodigo(), null);
                        jContentPane.add(jLabel3, null);
                        jContentPane.add(getJTChofer(), null);
                        jContentPane.add(getJTPlaca(), null);
                        jContentPane.add(jLabel2, null);
                        jContentPane.add(jLabel4, null);
                }
                return jContentPane;
        }

        /**
         * This method initializes jScrollPane 
         *      
         * @return javax.swing.JScrollPane     
         */

        private JScrollPane getJScrollPane() {
                if (jScrollPane == null) {
                        jScrollPane = new JScrollPane();
                        jScrollPane.setBounds(new Rectangle(14, 74, 180, 240));
                        jScrollPane.setViewportView(getJTable());
                }
                return jScrollPane;
        }

        /**
         * This method initializes jTable      
         *      
         * @return javax.swing.JTable  
         */

        private JTable getJTable() {
                if (jTable == null) {
                        Vector<String> columnasTabla = new Vector<String>();
                        columnasTabla.add("Código");
                        columnasTabla.add("Fletero");
                        model = new FleteroModel();
                       
                        jTable = new JTable(model);
                        jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
                        jTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
                               
                                @Override
                                public void valueChanged(ListSelectionEvent e) {
                                        // TODO Auto-generated method stub
                                        Integer row=jTable.getSelectedRow();
                                        Integer valor=(Integer) jTable.getValueAt(row, 0);
                                        Fletero fletero = new Fletero(valor);
                                        Vector<String> fle =model.Ver(fletero);
                                        getJTCodigo().setText(fle.get(0).toString());
                                        getJTRazon().setText(fle.get(1));
                                        getJTDireccion().setText(fle.get(2));
                                        getJTChofer().setText(fle.get(3));
                                        getJTPlaca().setText(fle.get(4));
                                       
                                }

                        });
                        jTable.getSelectionModel().clearSelection();
                }
                return jTable;
        }

        /**
         * This method initializes jTRazon     
         *      
         * @return javax.swing.JTextField      
         */

        private JTextField getJTRazon() {
                if (jTRazon == null) {
                        jTRazon = new JTextField();
                        jTRazon.setBounds(new Rectangle(390, 74, 185, 25));
                }
                return jTRazon;
        }

        /**
         * This method initializes jTDireccion 
         *      
         * @return javax.swing.JTextField      
         */

        private JTextField getJTDireccion() {
                if (jTDireccion == null) {
                        jTDireccion = new JTextField();
                        jTDireccion.setBounds(new Rectangle(390, 120, 183, 26));
                }
                return jTDireccion;
        }

        /**
         * This method initializes jBEliminar  
         *      
         * @return javax.swing.JButton 
         */

        private JButton getJBEliminar() {
                if (jBEliminar == null) {
                        jBEliminar = new JButton();
                        jBEliminar.setLocation(new Point(250, 311));
                        jBEliminar.setText("Eliminar");
                        jBEliminar.setSize(new Dimension(90, 35));
                        jBEliminar.addActionListener(new java.awt.event.ActionListener() {
                                public void actionPerformed(java.awt.event.ActionEvent e) {
                                        int codigo=0;
                                        codigo=Integer.parseInt(getJTCodigo().getText());
                                        if(codigo>0){
                                                Fletero fletero = new Fletero(codigo);
                                                model.eliminarRegistro(fletero);
                                                removeAllRows();
                                                model.refrescarDatos();
                                        }else{
                                                System.out.println("Selecciona un puesto para eliminarlo");
                                        }

                                        //model.refrescarDatos();
                                       
                                }
                        });
                }
                return jBEliminar;
        }

        /**
         * This method initializes jBGuardar   
         *      
         * @return javax.swing.JButton 
         */

        private JButton getJBGuardar() {
                if (jBGuardar == null) {
                        jBGuardar = new JButton();
                        jBGuardar.setLocation(new Point(380, 311));
                        jBGuardar.setText("Guardar");
                        jBGuardar.setSize(new Dimension(90, 35));
                        jBGuardar.addActionListener(new java.awt.event.ActionListener() {
                                public void actionPerformed(java.awt.event.ActionEvent e) {

                                                int codigo= Integer.parseInt(getJTCodigo().getText());
                                               
                                                Fletero fletero = new Fletero();
                                                fletero.setRazonsocial(getJTRazon().getText());
                                                fletero.setDireccion(getJTDireccion().getText());
                                                fletero.setChofer(getJTChofer().getText());
                                                fletero.setPlaca(getJTPlaca().getText());
                                               
                                                if (codigo>0){
                                                        fletero.setCodigo(codigo);
                                                        model.actualizaRegistro(fletero);
                                                        //System.out.println("LLAMAR A FUNCION ACTUALIZA");
                                                }else{
                                                        fletero.setCodigo(model.idNuevoRegistro());
                                                        model.guardarRegistro(fletero);
                                                        //System.out.println("LLAMAR A FUNCION GUARDARREGISTRO");
                                                }
                                                try {
                                                        //Aquí no me esta borrando todas las filas, solo falla cuando
                                                        //Selecciono una fila de la tabla, si no selecciono funciona
                                                        //Correctamnete
                                                        removeAllRows();
                                                        model.refrescarDatos();
                                                        enabledDisabled(false);
                                                        cleanJTextField();
                                                       
                                                } catch (Exception e2) {
                                                        // TODO: handle exception
                                                }

                                }
                        });
                }
                return jBGuardar;
        }

        /**
         * This method initializes jBCancelar  
         *      
         * @return javax.swing.JButton 
         */

        private JButton getJBCancelar() {
                if (jBCancelar == null) {
                        jBCancelar = new JButton();
                        jBCancelar.setLocation(new Point(510, 311));
                        jBCancelar.setText("Cancelar");
                        jBCancelar.setSize(new Dimension(90, 35));
                        jBCancelar.addActionListener(new java.awt.event.ActionListener() {
                                public void actionPerformed(java.awt.event.ActionEvent e) {
                                        enabledDisabled(false);

                                }
                        });
                }
                return jBCancelar;
        }

        /**
         * This method initializes jBAgregar   
         *      
         * @return javax.swing.JButton 
         */

        private JButton getJBAgregar() {
                if (jBAgregar == null) {
                        jBAgregar = new JButton();
                        jBAgregar.setLocation(new Point(250, 375));
                        jBAgregar.setText("Agregar");
                        jBAgregar.setSize(new Dimension(90, 35));
                        jBAgregar.addActionListener(new java.awt.event.ActionListener() {
                                public void actionPerformed(java.awt.event.ActionEvent e) {
                                        enabledDisabled(true);
                                        cleanJTextField();
                                        getJTCodigo().setText("0");
                                }
                        });
                }
                return jBAgregar;
        }

        /**
         * This method initializes jBEditar    
         *      
         * @return javax.swing.JButton 
         */

        private JButton getJBEditar() {
                if (jBEditar == null) {
                        jBEditar = new JButton();
                        jBEditar.setSize(new Dimension(90, 35));
                        jBEditar.setText("Editar");
                        jBEditar.setLocation(new Point(380, 375));
                        jBEditar.addActionListener(new java.awt.event.ActionListener() {
                                public void actionPerformed(java.awt.event.ActionEvent e) {
                                        int codigo = Integer.parseInt(getJTCodigo().getText());
                                        if (codigo>0){
                                                enabledDisabled(true);
                                        }else{
                                                JOptionPane.showMessageDialog(null, "Selecciona registro para modificar\n");
                                        }
                                }
                        });
                }
                return jBEditar;
        }

        /**
         * This method initializes jBCerrar    
         *      
         * @return javax.swing.JButton 
         */

       
        private JButton getJBCerrar() {
                if (jBCerrar == null) {
                        jBCerrar = new JButton();
                        jBCerrar.setSize(new Dimension(90, 35));
                        jBCerrar.setText("Cerrar");
                        jBCerrar.setLocation(new Point(510, 375));
                        jBCerrar.addActionListener(new java.awt.event.ActionListener() {
                                public void actionPerformed(java.awt.event.ActionEvent e) {
                                         dispose();
                                }
                        });
                }
                return jBCerrar;
        }

public void removeAllRows(){
        while(model.getRowCount()>0){
                model.removeRow(0);
        }
}

/**
 * This method initializes jTCodigo    
 *      
 * @return javax.swing.JTextField      
 */

private JTextField getJTCodigo() {
        if (jTCodigo == null) {
                jTCodigo = new JTextField();
                jTCodigo.setBounds(new Rectangle(555, 14, 35, 32));
                jTCodigo.setText("0");
                jTCodigo.setVisible(true);
        }
        return jTCodigo;
}

private void enabledDisabled(boolean isParam){
        getJTRazon().setEnabled(isParam);
        getJTDireccion().setEnabled(isParam);
        getJTChofer().setEnabled(isParam);
        getJTPlaca().setEnabled(isParam);
       
        getJBEliminar().setVisible(isParam);
        getJBGuardar().setVisible(isParam);
        getJBCancelar().setVisible(isParam);
       
        getJBAgregar().setVisible(!isParam);
        getJBEditar().setVisible(!isParam);
        getJBCerrar().setVisible(!isParam);
        }

private void cleanJTextField(){
        getJTRazon().setText("");
        getJTDireccion().setText("");
        getJTChofer().setText("");
        getJTPlaca().setText("");
}

/**
 * This method initializes jTChofer    
 *      
 * @return javax.swing.JTextField      
 */

private JTextField getJTChofer() {
        if (jTChofer == null) {
                jTChofer = new JTextField();
                jTChofer.setLocation(new Point(390, 166));
                jTChofer.setSize(new Dimension(183, 26));
        }
        return jTChofer;
}

/**
 * This method initializes jTPlaca     
 *      
 * @return javax.swing.JTextField      
 */

private JTextField getJTPlaca() {
        if (jTPlaca == null) {
                jTPlaca = new JTextField();
                jTPlaca.setLocation(new Point(390, 212));
                jTPlaca.setSize(new Dimension(183, 26));
        }
        return jTPlaca;
}

}  

////////////////////////////////////////////////////////////////////////////////////////////////////////////
package manager.empaque.model;

import java.util.Vector;

import javax.swing.table.AbstractTableModel;

import com.tutorialjava.bd.ControladorBD;

import manager.empaque.domain.Fletero;

public class FleteroModel extends AbstractTableModel {
        /**
         *
         */

        private static final long serialVersionUID = 1L;
        private Vector<Fletero> filas;
       
        private String[] columnNames = {"Código","Fletero"};
       
        public FleteroModel(){
                filas = new Vector<Fletero>();
                try {
                        refrescarDatos();
                } catch (Exception e) {
                        System.err.println(e);
                }
        }

        @Override
        public int getColumnCount() {
                // TODO Auto-generated method stub
                return 2;
        }

        @Override
        public int getRowCount() {
                // TODO Auto-generated method stub
                return filas.size();
        }

        @Override
        public Object getValueAt(int arg0, int arg1) {
                Fletero fletero = filas.get(arg0);
                switch(arg1){
                case 0:
                        return fletero.getCodigo();
                case 1:
                        return fletero.getNombre();
                }
                return fletero;
        }
       
    @Override
    public String getColumnName(int col) {
        return columnNames[col];
    }
        public void removeRow(int row) {
                filas.remove(row);
                fireTableRowsDeleted(row, row);
        }
        public void refrescarDatos(){
                filas.clear();
                String sql="SELECT fle_codigo,fle_razon FROM fleteros";
                try {
                        ControladorBD.addSql(sql);
                        ControladorBD.execute();
                        while(ControladorBD.finRecordSet()){
                                Fletero fletero = new Fletero();
                                        fletero.setCodigo(ControladorBD.getInt("fle_codigo"));
                                        fletero.setNombre(ControladorBD.getString("fle_razon"));
                                        filas.add(fletero);
                        }
                        fireTableDataChanged();
                } catch (Exception e) {
                        // TODO: handle exception
                        System.err.println(e);
                }
        }
        public void guardarRegistro(Fletero fletero){
                String sql="";
                try {
                        sql="INSERT INTO fleteros(fle_codigo,fle_razon,fle_direccion,fle_chofer,fle_placa) VALUES ("+fletero.getCodigo() +",'"+fletero.getRazonsocial() +"','"+fletero.getDireccion()+"','"+fletero.getChofer() +"', '"+fletero.getPlaca() +"')";
                                System.out.println("crea nuevo");
                        ControladorBD.addSql(sql);
                        ControladorBD.execute();
                } catch (Exception e) {
                        // TODO: handle exception
                        System.err.println(e);
                }
        }
       
        public void actualizaRegistro(Fletero fletero){
                String sql="";
                try {
                        sql="UPDATE fleteros SET fle_razon= '" + fletero.getRazonsocial() +"',fle_direccion= '" + fletero.getDireccion() +"',fle_chofer= '" + fletero.getChofer() +"',fle_placa= '" + fletero.getPlaca() +"' WHERE fle_codigo = " + fletero.getCodigo();
                        ControladorBD.addSql(sql);
                        ControladorBD.execute();
                } catch (Exception e) {
                        // TODO: handle exception
                        System.err.println(e);
                }
        }
       
        public Integer idNuevoRegistro(){
                Integer nuevo=0;
                try {
                        String sql="SELECT * FROM fleteros ORDER BY fle_codigo DESC LIMIT 1";
                        ControladorBD.addSql(sql);
                        ControladorBD.execute();
                        if(ControladorBD.finRecordSet()){
                                nuevo = ControladorBD.getInt("fle_codigo");
                                nuevo = nuevo +1;
                        }else{
                                nuevo = nuevo +1;      
                        }
                       
                } catch (Exception e) {
                        // TODO: handle exception
                        System.err.println(e);
                }
                return nuevo;
               
        }
       
        public void eliminarRegistro(Fletero fletero){
                System.out.println(fletero.getCodigo());
                String sql="DELETE FROM fleteros WHERE fle_codigo =" + fletero.getCodigo();
                try {
                        ControladorBD.addSql(sql);
                        ControladorBD.execute();
                } catch (Exception e) {
                        // TODO: handle exception
                        System.err.println(e);
                }
        }
       
        public Vector<String> Ver(Fletero fletero){
                Vector<String> rows =new Vector<String>();
                try {
                        String sql="SELECT * FROM fleteros WHERE fle_codigo ="+ fletero.getCodigo();
                        ControladorBD.addSql(sql);
                        ControladorBD.execute();
                        if(ControladorBD.finRecordSet()){
                               
                                        rows.add(ControladorBD.getInt("fle_codigo").toString());
                                        rows.add(ControladorBD.getString("fle_razon"));
                                        rows.add(ControladorBD.getString("fle_direccion"));
                                        rows.add(ControladorBD.getString("fle_chofer"));
                                        rows.add(ControladorBD.getString("fle_placa"));
                        }
                } catch (Exception e) {
                        // TODO: handle exception
                }
                return rows;
               
        }

}

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

java.lang.ArrayIndexOutOfBoun

java.lang.ArrayIndexOutOfBoundsException significa que estás tratando de acceder un índice que no existe.

Ejemplo:

class Ejemplo {
   public static void main( String ... args ) {
       String [] array = new String[];
       array[ -1  ];  // quiere acceder el elemento -1 que no existe
   }
}

En una revisión breve de tu código parece que el problema está aquí ( y digo "parece" porque no pusiste el stacktrace )

        public void removeRow(int row) {
                filas.remove(row);  // <--- aqui, no estas validando rangos.
                fireTableRowsDeleted(row, row);
        }

En realidad NO deberías de validar rangos ( bueno, si es publico si, pero idealmente este metodo debería de ser privado ) y te deberías de asegurar programaticamente que nunca se llamara con un rango inválido.

Si quieres arreglarlo "cochinamente" basta con que escribas algo como:

        public void removeRow(int row) {
                if( row < 0 || row > filas.size() ) {  
                    // fuera de rango, no le hagas caso
                    return ; // ya terminó
                 }
                filas.remove(row);
                fireTableRowsDeleted(row, row);
        }

DIgo "cochinamente", porque solamente estaras escondiendo el problema original. Aunque si tu método de verdad debiera ser publico ( ser usado por alguien más ) entonces si vale la pena revisar el rango o en todo caso tirar una excepción tu mismo:

        public void removeRow(int row) {
                if( row < 0 || row > filas.size() ) {  
                    // fuera de rango, no le hagas caso
                    throw new ArrayOutOfBoundsException("Indice fuera de rango, revise su código :P " + row );
                 }

                filas.remove(row);
                fireTableRowsDeleted(row, row);
        }

Lo que tienes que hacer es buscar porque se te está originando un indice -1 o porque quieres quitar más registros de los que tienes. Esto sí arreglaría tu problema de raíz.

Espero que esto te sirva.

Nota adicional: TODOS LOS

Nota adicional: TODOS LOS RUNTIME EXCEPTION SON ERRORES DE PROGRAMACION y pueden ser evitados por el programador ( en el código ). Esa es la naturaleza de los runtimeexception.

Desafortunadamente, aunque esta distinción es muy buena ( checked exceptions | runtime exceptions | errors ) , en la práctica resulto ruidosa.

Enviando stack trace

Exception occurred during event dispatching:
java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.Vector.get(Vector.java:696)
at manager.empaque.model.FleteroModel.getValueAt(FleteroModel.java:47)
at javax.swing.JTable.getValueAt(JTable.java:2686)
at manager.empaque.view.FrmFletero$1.valueChanged(FrmFletero.java:155)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:167)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:147)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:194)
at javax.swing.DefaultListSelectionModel.removeIndexInterval(DefaultListSelectionModel.java:660)
at javax.swing.JTable.tableRowsDeleted(JTable.java:4497)
at javax.swing.JTable.tableChanged(JTable.java:4400)
at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:280)
at javax.swing.table.AbstractTableModel.fireTableRowsDeleted(AbstractTableModel.java:245)
at manager.empaque.model.FleteroModel.removeRow(FleteroModel.java:63)
at manager.empaque.view.FrmFletero.removeAllRows(FrmFletero.java:362)
at manager.empaque.view.FrmFletero$3.actionPerformed(FrmFletero.java:261)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6267)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6032)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
at java.awt.Dialog$1.run(Dialog.java:1046)
at java.awt.Dialog$3.run(Dialog.java:1098)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1096)
at java.awt.Component.show(Component.java:1563)
at java.awt.Component.setVisible(Component.java:1515)
at java.awt.Window.setVisible(Window.java:842)
at java.awt.Dialog.setVisible(Dialog.java:986)
at manager.empaque.view.FrmAplicacion$5.actionPerformed(FrmAplicacion.java:295)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1223)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1264)
at java.awt.Component.processMouseEvent(Component.java:6267)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6032)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Ahh pues asi está mucho más

Ahh pues asi está mucho más claro, es en la siguiente linea:

Mira la linea en negro:

java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.Vector.get(Vector.java:696)
at manager.empaque.model.FleteroModel.getValueAt(FleteroModel.java:47)
at javax.swing.JTable.getValueAt(JTable.java:2686)
at manager.empaque.view.FrmFletero$1.valueChanged(FrmFletero.java:155)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:167)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:147)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:194)
at javax.swing.DefaultListSelectionModel.removeIndexInterval(DefaultListSelectionModel.java:660)
at javax.swing.JTable.tableRowsDeleted(JTable.java:4497)
at javax.swing.JTable.tableChanged(JTable.java:4400)
at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:280)
at javax.swing.table.AbstractTableModel.fireTableRowsDeleted(AbstractTableModel.java:245)
at manager.empaque.model.FleteroModel.removeRow(FleteroModel.java:63)
...

Esa linea ( la linea 63 del archivo FleteroModel.java ) es TU código, lo que hay después es código de Java hasta que revienta esta arriba. La causa es similar, le estás diciendo que actualice con un índice -1, intenta validar que si es -1 no llame al método fireTableRowsDelete y listo!

Pregunta para tí ¿Por que estas llamando ese método con -1? Por ahí hay algo que puedes revisar para entender que es lo que el código está haciendo

Espero que esto sirva.

yo no lo estoy llamando con -1

Hice este metodo en la clase FrmFletero
public void removeAllRows(){
while(model.getRowCount()>0){
model.removeRow(0);
}
}

Este metodo lo llamdo en un actionPerfomed en el boton Guardar y ahi es cuan se general el -1
tampoco tengo idea de donde sale.

Haz un esfuerzo por leer el

Haz un esfuerzo por leer el stacktrace. Sé que no es obvio al principio, pero ahí está la respuesta. Va de nuevo:

java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.Vector.get(Vector.java:696)
at manager.empaque.model.FleteroModel.getValueAt(FleteroModel.java:47) //<- tu codigo
at javax.swing.JTable.getValueAt(JTable.java:2686)
at manager.empaque.view.FrmFletero$1.valueChanged(FrmFletero.java:155)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:167)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:147)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:194)
at javax.swing.DefaultListSelectionModel.removeIndexInterval(DefaultListSelectionModel.java:660)
at javax.swing.JTable.tableRowsDeleted(JTable.java:4497)
at javax.swing.JTable.tableChanged(JTable.java:4400)
at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:280)
at javax.swing.table.AbstractTableModel.fireTableRowsDeleted(AbstractTableModel.java:245)
at manager.empaque.model.FleteroModel.removeRow(FleteroModel.java:63) //<- tu codigo

En removeRow estás quitando el elemento del vector. Luego llamas a fireTabeRowDelete que eventualmente termina llamado a "getValueAt" ( FleteroModel.java linea 47 ) que a su ves llama al método get de vector

Fletero fletero = filas.get(arg0);

Y ahí es donde estalla ( mira el stacktrace )

at java.util.Vector.get(Vector.java:696)

Luego yendo a la documentación http://download.oracle.com/javase/6/docs/api/java/util/Vector.html#get(int) se lee lo siguiente:

Throws:ArrayIndexOutOfBoundsException - if the index is out of range (index < 0 || index >= size())

Como tu vector está vacío porque ya le quitaste el elemento entonces size == 0 y como tu índice es 0, entonces 0 >= 0 da true y eso hace que lance la excepción.

Todo esto te lo estoy diciendo sin haber corrido el código ni nada, solo con observar el stacktrace. Tu tendrás más elementos para revisar como esta fallando tu código.

Espero que estos tips te ayuden.

Imagen de beto.bateria

Tuve un problema similar al

Tuve un problema similar al querer borrar los elementos de un vector, lo que hice es borrar desde el ultimo elemento hasta el primero.