Es raro, dado que si ocupas el dispose, debiera desasignar todos los recursos de este internalFrame. Ahora sería bueno que siempre que lo llamases inicializaras las variables con las cuales trabajas, cosa que siempre que se inicie, sea primera vez que se utilice. - no se si me expliqué en la idea -
Lo otro, es que en el método dispose del internal frame, coloques las variables que utilizas en null, cosa de decirle a java que las destrulles explicitamente.. Recuerda que los traspasos son por referencia y siempre que haces una asignación, esa variable es destruida y creada con un nuevo valor.. intenta eso y nos cuentas que tal te fue..