Java - java.lang.arrayindexoutofboundsexception 12

 
Vista:
Imágen de perfil de Cesar

java.lang.arrayindexoutofboundsexception 12

Publicado por Cesar (5 intervenciones) el 08/08/2014 19:33:07
Hola que tal buen dia, me podrian ayudar con un problema que me surgio, lo que sucede es que tengo un jTable y quiero exportar su contenido a un .csv, ya hice mi boton y los metodos de obtener y exportar datos, pero cuando intento exportar mi tabla completa me manda una excepcion (java.lang.arrayindexoutofboundsexception 12), pero esto solo sucede cuando son mas de 12 lineas, siendo menos me hace la exportacion sin ningun problema, parece problema de mi bucle for en el metodo de exportacion pero segun veo esta correcto, me podrian apoyar.

-Estos son los metodos;

OBTENER DATOS DEL JTABLE

public String [][] obtenerdatos(){
int numFilas=tbcrew.getRowCount();
int numColumnas=tbcrew.getColumnCount();
String matrix [][] = new String [numFilas+1][numColumnas];
for (int rowIndex=0;rowIndex<numFilas;rowIndex++){
for (int colIndex=0;colIndex<numColumnas;colIndex++){
matrix[rowIndex][colIndex]=(String)tbcrew.getValueAt(rowIndex, colIndex);
}
}
return matrix;
}


EXPORTAR A ARCHIVO

private void exportActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
int resultado = fileChooser.showSaveDialog(this);
if (resultado == JFileChooser.CANCEL_OPTION){
return;
}
File archivo = fileChooser.getSelectedFile();
try{
PrintWriter salida = new PrintWriter(new FileWriter(archivo+".csv"));
String data[][]=obtenerdatos();
for (int i = 0; i<data.length; 0++) {
salida.print(data[i][0]);
for (int j = 1; j<data.length; j++) {
String word = data[i][j];
if(word != null){
salida.print(","+word);
}else{
salida.print(",");
}
}
salida.println();
}
salida.close();
}catch(IOException io){

}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

java.lang.arrayindexoutofboundsexception 12

Publicado por Pedro (81 intervenciones) el 11/08/2014 14:54:23
El error que te da te dice que estás accediendo a una posición que no existe de un array. La causa, habría que saber que array es en concreto.

Si puedes pegar aquí el error que tira sería más fácil
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Cesar

java.lang.arrayindexoutofboundsexception 12

Publicado por Cesar (5 intervenciones) el 11/08/2014 17:37:06
Hola Pedro muchas gracias por responder, te anexo el error que me genera al exportar el erchivo

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 12
at clases.windows.crew.exportActionPerformed(crew.java:230) at clases.windows.crew.exportActionPerformed(crew.java:230)
at clases.windows.crew.access$300(crew.java:29)
at clases.windows.crew$4.actionPerformed(crew.java:190)
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:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
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:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
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:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

java.lang.arrayindexoutofboundsexception 12

Publicado por Tom (1831 intervenciones) el 12/08/2014 15:33:37
getRowCount() y getColumnCount() te devuelven el número de filas y de columnas visibles.
Las dimensiones reales debes obtenerlas del tablemodel.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Cesar

java.lang.arrayindexoutofboundsexception 12

Publicado por Cesar (5 intervenciones) el 12/08/2014 16:33:33
Muchas gracias Tom justo era eso lo que pasa, como retroalimentacion;
- Tuve que mover mi DefaultTableModel modelo = new DefaultTableModel(); a la clase publica, la tenia en un void
- Cambie el meotodo de obtener como me indicaste.
- Y por ultimo, agregue el arraya de filas [i] al segundo ciclo for en el metodo de exportar for (int j = 1; j<data[i].length; j++) , quiza de tanto que modifique lo borre en un descuido.

Muchas gracias por la ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar