Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Un boton Me eliminan mas de un registro

Estas en el tema de Un boton Me eliminan mas de un registro en el foro de Java en Foros del Web. Buenas comunidad de forosdelweb. Estoy trando de eliminar un objeto o dato de un arrayList. interfaza.arreglo.remove(posicion); Tengo 3 paquetes: Modelo, Vista Controlador. En vista tengo ...
  #1 (permalink)  
Antiguo 02/12/2014, 19:37
Avatar de freddy31DA  
Fecha de Ingreso: junio-2012
Mensajes: 84
Antigüedad: 11 años, 10 meses
Puntos: 2
Busqueda Un boton Me eliminan mas de un registro

Buenas comunidad de forosdelweb.
Estoy trando de eliminar un objeto o dato de un arrayList.
interfaza.arreglo.remove(posicion);

Tengo 3 paquetes: Modelo, Vista Controlador.
En vista tengo el JFrame de proveedores, en controlador manipula la interfaz eventos, etc..
cuando se muestra la interfaz tiene un boton eliminar y una tabla con todos los proveedores y otras cosas como los campos para meter datos.
Obtengo la posicón del elemento que quiero eliminar con el metodo
selectedRow:
Tengo un botn en la interfaz que cuando lo presiono me ejecuta el metodo eliminar

tablaProveedores.getSelectedRow();
Código Java:
Ver original
  1. public void eliminarProveedor(){
  2.             int posicion = gui_proveedor.tablaProveedores.getSelectedRow();
  3.             //eliminamos del arreglo gui_proveedor.ArrayProveedores:
  4.             gui_proveedor.ArrayProveedores.remove(posicion); //Lo elimina
  5.            
  6.             grabarEnArchivoProveedores(); //Este recorre todo el arreglo y lo llena al aarchivo:
  7.            
  8.             //Actualizamos la tabla:
  9.             gui_proveedor.tablaProveedores.updateUI();
  10.         JOptionPane.showMessageDialog(this, "Elimando correctamente");
  11.            
  12.           }

Este es El metodo que recorre el arreglo y es este y a la vez vuelve a lllenar el archivo y el arreglo ArrayProveedores

Código Java:
Ver original
  1. public void grabarEnArchivoProveedores(){
  2.      String rutaArchivo = System.getProperty("user.dir");
  3.         rutaArchivo =rutaArchivo+"\\Proveedores.txt";
  4.         PrintWriter fichero = null;
  5.         try{
  6.                 fichero = new PrintWriter(rutaArchivo);
  7.                for (int i = 0; i <gui_proveedor.ArrayProveedores.size(); i++) {
  8.                      fichero.println(
  9.                                     gui_proveedor.ArrayProveedores.get(i).getCodigo()+", "+
  10.                                     gui_proveedor.ArrayProveedores.get(i).getNrRuc()+", "+
  11.                                     gui_proveedor.ArrayProveedores.get(i).getNombre()+", "+
  12.                                     gui_proveedor.ArrayProveedores.get(i).getDireccion()+", "+
  13.                                     gui_proveedor.ArrayProveedores.get(i).getTelefono()+", "+
  14.                                     gui_proveedor.ArrayProveedores.get(i).getPaginaWeb()+", "+
  15.                                     gui_proveedor.ArrayProveedores.get(i).getCorreo()+", "+
  16.                                     gui_proveedor.ArrayProveedores.get(i).getDepartamento()+", "+
  17.                                     gui_proveedor.ArrayProveedores.get(i).getProvincia()+", "+
  18.                                     gui_proveedor.ArrayProveedores.get(i).getDistrito()+", "+
  19.                                     gui_proveedor.ArrayProveedores.get(i).getProve_Respresentante()+", "+
  20.                                     gui_proveedor.ArrayProveedores.get(i).getProveRepre_Telefono());
  21.                                        
  22.             }
  23.                
  24.                 fichero.flush();
  25.                 fichero.close();
  26.                
  27.         }catch(FileNotFoundException e){
  28.             System.out.println("Archivo no encontrado");
  29.         }finally{
  30.             if(fichero!=null){
  31.             fichero.close();
  32.             }
  33.         }
  34.     }

Lo extraño de mi caso es de que cuando presiono el boton, la operación llega hasta el método que elimina me muestra el mensaje y se repite varias veces el mensaje de confirmación y me elimina mas de un registro y luego me manda una exepción de que el arreglo está fuera de limites.
¿Habrá alguna forma de detener el proceso de un evento la verdad estoy desesperado . e intentado quitanto el mensaje pero al final siempre se me iliminan mas de un registro
__________________
Creo en Internet.
Amén.

Última edición por freddy31DA; 02/12/2014 a las 19:42 Razón: mejor vista
  #2 (permalink)  
Antiguo 03/12/2014, 01:41
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Un boton Me eliminan mas de un registro

Buenas,

Puedes poner el codigo de la excepcion?


Un saludo
__________________
If to err is human, then programmers are the most human of us

Última edición por Profesor_Falken; 03/12/2014 a las 09:13
  #3 (permalink)  
Antiguo 03/12/2014, 11:12
Avatar de freddy31DA  
Fecha de Ingreso: junio-2012
Mensajes: 84
Antigüedad: 11 años, 10 meses
Puntos: 2
Respuesta: Un boton Me eliminan mas de un registro

Hola Profesor_Falken bueno mira está es la excepción es la siguiente : IndexOutOfBoundsException

Código Java:
Ver original
  1. Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
  2.     at java.util.ArrayList.rangeCheck(ArrayList.java:635)
  3.     at java.util.ArrayList.remove(ArrayList.java:474)
  4.     at CONTROLADOR.Controlar_Proveedor.eliminarProveedor(Controlar_Proveedor.java:351)
  5.     at CONTROLADOR.Controlar_Proveedor.actionPerformed(Controlar_Proveedor.java:65)
  6.     at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
  7.     at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
  8.     at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
  9.     at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
  10.     at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
  11.     at java.awt.Component.processMouseEvent(Component.java:6505)
  12.     at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
  13.     at java.awt.Component.processEvent(Component.java:6270)
  14.     at java.awt.Container.processEvent(Container.java:2229)
  15.     at java.awt.Component.dispatchEventImpl(Component.java:4861)
  16.     at java.awt.Container.dispatchEventImpl(Container.java:2287)
  17.     at java.awt.Component.dispatchEvent(Component.java:4687)
  18.     at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
  19.     at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
  20.     at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
  21.     at java.awt.Container.dispatchEventImpl(Container.java:2273)
  22.     at java.awt.Window.dispatchEventImpl(Window.java:2719)
  23.     at java.awt.Component.dispatchEvent(Component.java:4687)
  24.     at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
  25.     at java.awt.EventQueue.access$200(EventQueue.java:103)
  26.     at java.awt.EventQueue$3.run(EventQueue.java:694)
  27.     at java.awt.EventQueue$3.run(EventQueue.java:692)
  28.     at java.security.AccessController.doPrivileged(Native Method)
  29.     at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
  30.     at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
  31.     at java.awt.EventQueue$4.run(EventQueue.java:708)
  32.     at java.awt.EventQueue$4.run(EventQueue.java:706)
  33.     at java.security.AccessController.doPrivileged(Native Method)
  34.     at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
  35.     at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
  36.     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
  37.     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
  38.     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
  39.     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
  40.     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
  41.     at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Te dejo el folder de mi trabajo abajo , e intentando hacer varias cosas desde limpiar el fichero y luego volver a llenarlo pero igual en unos casos se me duplicaba el tamaño del arreglo y no puedo solucionarlo ¿Será que java se traba?

archivo https://www.mediafire.com/?tiaksjmwblxvk5r
__________________
Creo en Internet.
Amén.
  #4 (permalink)  
Antiguo 03/12/2014, 12:32
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Un boton Me eliminan mas de un registro

Buenas,

Por algún extraño motivo registras el evento del botón Eliminar TRES VECES.
Por eso, cada vez que le haces clic llama tres veces al método de eliminar proveedores.

//registro de eventos a los botones
this.gui_proveedor = gui_proveedor;
gui_proveedor.btnEliminar.addActionListener(this);
gui_proveedor.botonAniadir.addActionListener(this) ;
gui_proveedor.btnActualizar.addActionListener(this );
gui_proveedor.btnLimpiar.addActionListener(this);
gui_proveedor.btnEliminar.addActionListener(this);
gui_proveedor.btnEliminar.addActionListener(this);

//se registra evento para la tabla
gui_proveedor.tablaProveedores.addMouseListener(th is);



Un saludo
__________________
If to err is human, then programmers are the most human of us
  #5 (permalink)  
Antiguo 03/12/2014, 15:52
Avatar de freddy31DA  
Fecha de Ingreso: junio-2012
Mensajes: 84
Antigüedad: 11 años, 10 meses
Puntos: 2
De acuerdo Respuesta: Un boton Me eliminan mas de un registro

Cita:
Iniciado por Profesor_Falken Ver Mensaje
Buenas,

Por algún extraño motivo registras el evento del botón Eliminar TRES VECES.
Por eso, cada vez que le haces clic llama tres veces al método de eliminar proveedores.

//registro de eventos a los botones
this.gui_proveedor = gui_proveedor;
gui_proveedor.btnEliminar.addActionListener(this);
gui_proveedor.botonAniadir.addActionListener(this) ;
gui_proveedor.btnActualizar.addActionListener(this );
gui_proveedor.btnLimpiar.addActionListener(this);
gui_proveedor.btnEliminar.addActionListener(this);
gui_proveedor.btnEliminar.addActionListener(this);

//se registra evento para la tabla
gui_proveedor.tablaProveedores.addMouseListener(th is);



Un saludo
Hey Profesor_Falken gracias por la ayuda la verdad no me di cuenta de que le registre más de una vez los eventos para el boton eliminar gracias :D
Thanks a lot
__________________
Creo en Internet.
Amén.

Última edición por freddy31DA; 03/12/2014 a las 15:53 Razón: detalles

Etiquetas: eventos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:51.