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

Cerrar un applet

Estas en el tema de Cerrar un applet en el foro de Java en Foros del Web. Hola a todos!! Estoy implementando un applet en Java que tiene un botón que realiza una serie de acciones para terminar la aplicación. Mi problema ...
  #1 (permalink)  
Antiguo 14/03/2007, 08:06
 
Fecha de Ingreso: marzo-2007
Mensajes: 5
Antigüedad: 17 años, 1 mes
Puntos: 0
Cerrar un applet

Hola a todos!!

Estoy implementando un applet en Java que tiene un botón que realiza una serie de acciones para terminar la aplicación. Mi problema viene a la hora de cerrar la ventana (no usando el aspa X, sino con una orden dada al pulsar un botón del interfaz), ya que como el applet se ejecuta en el navegador no tengo muy claro cómo hacerlo (las cosas que he probado me cerraban todas las páginas abiertas en el navegador).

Además, necesito que, antes de cerrar la aplicación realice una serie de tareas.

He leído que una opción es ejecutar el applet fuera del navegador, como una aplicación más. Sin embargo, no tengo muy claro que esa opción me sirva, ya que:
1. Mi aplicación debe lanzarse desde un servidor remoto.
2. El programa servidor que debe llamar a mi aplicación está escrito en C, y no tengo muy claro cómo pasarle los parámetros que el applet necesita si no es a través de una página html.

En fin, mis ideas empiezan a agotarse y no sé cómo controlar la finalización del programa, así que os agradecería cualquier sugerencia.

Muchas gracias!!
  #2 (permalink)  
Antiguo 14/03/2007, 11:22
Avatar de Valkam  
Fecha de Ingreso: junio-2006
Ubicación: Sevilla
Mensajes: 157
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: Cerrar un applet

Usa las funciones stop y close de los Applets. Hay puedes hacer lo que quieras antes de que el Applet se cierre
  #3 (permalink)  
Antiguo 14/03/2007, 13:24
Avatar de Tipdar  
Fecha de Ingreso: octubre-2005
Ubicación: Aquí y allá.
Mensajes: 323
Antigüedad: 18 años, 6 meses
Puntos: 7
Re: Cerrar un applet

Ups... el asunto es cerrar el navegador o mantener la página abierta con el applet deshabilitado?
__________________
El último TipdaR
  #4 (permalink)  
Antiguo 15/03/2007, 01:21
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Cerrar un applet

Lo que te sugieren de lanzar el applet "fuera" del navegador es que en la pagina HTML solo tengas un boton... o nada... y que el applet lo primero que haga sea crear un JFrame y trabajar ahi, y esa sería la ventana que "cerrarias" para terminar el programa.

Si incrustas el applet en la pagina, no puedes cerrar la "ventana" del applet puesto que no tiene ventana que cerrar.

S!
  #5 (permalink)  
Antiguo 17/03/2007, 06:03
 
Fecha de Ingreso: marzo-2007
Mensajes: 5
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Cerrar un applet

Gracias por las sugerencias.

De momento, he optado por lanzar mi applet por medio de un enlace que ejecuta el código openWindow de javascript. Con esto, he conseguido que mi applet se ejecute en una ventana diferente a la del propio navegador, aunque cuando lo cierro se me cierra también la página que tiene el enlace (y que sí está en el navegador).

Además, esta alternativa no me permite lanzar varias instancias del applet, pues todas se van a la misma ventana y sólo veo una .

Por otra parte, para cerrar esta ventana hago un simple System.exit(0), pero al ejecutar sobre firefox, detecta la acción como que la sesión se ha cerrado incorrectamente (muestra el típico mensaje de restaurar sesión la siguiente vez que abro el navegador).

La opción de crear un JFrame y lanzar el applet en él la he pensado también, pero mi applet necesita un montón de parámetros y no sé cómo pasárselos, pues se va a lanzar desde un servidor escrito en C.

¿Alguna sugerencia más?

Gracias
  #6 (permalink)  
Antiguo 17/03/2007, 07:25
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Cerrar un applet

El JFrame lo crearias desde el applet, normalmente haciendo que el applet sea un boton que lanze el JFrame o así, por que lo que los parametros los pasarias igual. Así que no entiendo la dificultad de pasarselos... ¿o no es así como lo planteas?
  #7 (permalink)  
Antiguo 18/03/2007, 12:33
 
Fecha de Ingreso: marzo-2007
Mensajes: 5
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Cerrar un applet

Hola de nuevo

GreenEyed, he hecho lo que me dices: ahora, mi applet crea un JFrame y se ejecuta en él. Aún así, sigo teniendo los mismos problemas que antes: cuando el applet se lanza desde el Internet Explorer cuando cierro el JFrame se me cierra también el navegador y si lo lanzo desde Firefox, además, cuando vuelvo a iniciar el navegador me dice que la sesión anterior no se cerró correctamente.

Para cerrar la ventana, básicamente hago un System.exit(0) (además de algunas cosillas de finalización)... es que debería usar algún otro método para finalizar? Hay algo que estoy olvidando?
  #8 (permalink)  
Antiguo 18/03/2007, 13:36
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Cerrar un applet

Dentro de una applet no tienes que hacer System.exit(0), eso hace que la maquina virtual termine abruptamente, con lo que no solo haces desaparecer el JFrame, si no el applet y cualquier otro applet que cuelgue de la misma JVM.

Lo que tienes que hacer en este caso es cerrar el JFrame con los metodos "normales", en este caso dispose().

Los ejemplos normente enseñan a usar System.exit(0) pero en realidad no debería usarse y debería bastar con cerrar adecuadamente todas las ventanas y recursos, pero como es la forma más "rápida"...

S!
  #9 (permalink)  
Antiguo 21/03/2007, 08:18
 
Fecha de Ingreso: marzo-2007
Mensajes: 5
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Cerrar un applet

Problema resuelto!!

Efectivamente, el problema era el uso de system.exit... Lo descubrí cinco minutos antes de tu última respuesta.

En cualquier caso, comento la solución final que he adoptado, por si le resulta de utilidad a alguien:

1. Al principio, cargo el applet en una ventana nueva haciendo uso de la función javascript window.open. Así obtengo la típica ventana de navegador que no tiene barra de herramientas y demás.

2. Al cerrar el applet, hago el proceso inverso: desde java cargo un nuevo documento html en la ventana donde se está mostrando el applet (función showDocument() con el parámetro _self). Dicha documento contiene el código javascript para cerrar ventanas (window.close()).

De este modo, consigo cerrar SÓLO el applet que verdaderamente quiero cerrar, sin afectar a ningún otro applet ni al resto de instancias abiertas del navegador.

Muchas gracias por la ayuda

P.D: ¿por qué nos enseñarán a ser tan chapuceros (por ejemplo, usando el system.exit()) en lugar de contarnos las cosas como son en realidad?
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 12:01.