Java - java.lang.StringIndexOutOfBoundsException - (uso de setvisible - Java)


06 de Mayo del 2017

Hola a todos, a ver si me ayudan.
Al abrir JFRAME frmJugador2 instanciando solo al principio el objeto de esta clase (en clase frmJugador1), y no cerrar con dispose() en frmJugador2 si no con this.setvisible(false);, para que el objeto siga en memoria, por alguna razón me da el siguiente error al querer volver a hacer visible la vetana.
"Exception in thread "AWT-EventQueue-0" java.lang.StringIndexOutOfBoundsException: String index out of range: -1"

JFRAME frmJugador1
En un JFRAME hago referencia al JFRAME frmJugador2 con el objeto objfrmJugador2.

public class frmJugador1 extends javax.swing.JFrame {

frmJugador2 objfrmJugador2 = new frmJugador2();

Luego más abajo en este mismo código, en el evento de botón

private void btnIntentoActionPerformed(java.awt.event.ActionEvent evt) {
objfrmJugador2.setVisible(true); //Con esto se abre y hace visible el JFRAME frmJugador2.
}
.
.
.
JFRAME frmJugador2
Luego cierro ventana frmJugador2 con this.setVisible(false);
Queda visible nuevamente este JFRAME frmJugador1, que en realidad nunca se hizo invisible, ya que frmJugador2, se abrió sobre esta y luego se cerro.

JFRAME frmJugador1
Vuelvo a presionar el botón para hacer visible nuevamente el JFRAME frmJugador2.

private void btnIntentoActionPerformed(java.awt.event.ActionEvent evt) {
objfrmJugador2.setVisible(true); //Con esto se debiera hacer visible nuevamente el JFRAME frmJugador2, pero da el error.
}
Muchaas gracias de ante mano.



06 de Julio del 2017

Hola.

No se si ya es muy tarde para responderte, pero lo hare de todas maneras.

 

El problema no esta en setVisible, lo que pasa que setVisible llama a los metodos que dibujan tu componente.

Imagino que sobre escribes los metodos que dibujan el componente, ya sea el metodo paint, paintComponent.

Asi que revisa estos metodos sobreescritos que aqui es realmente el problema, que no es más que una variable que usas como indice esta fuera de rango del vector en este caso un string al que quieres acceder.

 

Si esto no te ayuda, podrias poner toda la traza del error.

 

saludos