Foro sobre Java SE > JList -> eliminar elemento
Buenas,
Obtienes el selectedIndex del jlist pero luego haces el remove de una variable llamada modeloLista.... ¿que es modelolista? ¿es una variable de instancia de la clase? ¿que contiene exactamente y como la informas? ¿has probado a depurar su contenido justo antes de hacer el remove?
Un saludo
UnoPorAhi
La excepción te lo dice todo, estas intentando eliminar un elemento cuyo indice no existe. La explicación, sin revisar la documentación que es lo primero que hay que hacer, se me ocurre que cuando recuperas el indice del elemento seleccionado recuperas su posición, 1, 2, 3 (primero, segundo, tercero..) pero el indice dentro del list comienza en 0. El elemento primero tiene como indice el 0, el elemento segundo tiene como indice el 1, luego tendrás que eliminar el seleccionado - 1.
Un saludo
fileal_v
Buenas y gracias por vuestra ayuda,
modeloLista es el modelo asociado a los datos de la lista (javax.swing.DefaultListModel) sobre el que se operan los cambios (añadir, modificar, eliminar). Para jTable también hay DefaultTableModel.
Si muestro en un mensaje el valor del elemento seleccionado antes de la línea que contiene el método remove, veo que es correcto. ç
No he acabado de entender por qué con los mismos parámetros puedo modificar, y no eliminar,... pero he tomado una alternativa para mi aplicación (un array sobre el que hago las modicicaciones y las actualizo al jList en cada evento)
Charlie

Buenos días,
Mi duda es la siguiente... En el evento de un botón para eliminar items de un JList, obtengo siempre la excepción Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1.
He probado tanto remove(), como removeElement(), removeElementAt()... He comentado en el código las diferentes opciones que he probado, así como el código de modificar els del JList, que sí funciona.
¿Alguien me arroja una luz? Gracias por adelantado!!
Este es el código:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
//para eliminar del JList, lanza excepción
int index= jList1.getSelectedIndex();
if(index>=0){
modeloLista.remove(index);
}
/*op1: Usuario2 objUsuario2=(Usuario2)modeloLista.getElementAt(index);
modeloLista.removeElement(objUsuario2);*/
//op2: modeloLista.remove(index);
//op3: modeloLista.removeElementAt(index);
//para modificar del JList, funciona
/* String nombre;
nombre = jTextField1.getText();
Usuario2 objUsuario2 = new Usuario2(nombre);
modeloLista.set(index, objUsuario2);*/
}