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

Ejecutar algo cuando se da a cerrar

Estas en el tema de Ejecutar algo cuando se da a cerrar en el foro de Java en Foros del Web. Hola, mi intención es ejecutar algo cuando se le da a la X de cerrar la ventanita, es decir, que se ejecute y después se ...
  #1 (permalink)  
Antiguo 07/04/2012, 07:54
 
Fecha de Ingreso: junio-2007
Mensajes: 298
Antigüedad: 16 años, 10 meses
Puntos: 5
Ejecutar algo cuando se da a cerrar

Hola, mi intención es ejecutar algo cuando se le da a la X de cerrar la ventanita, es decir, que se ejecute y después se cierre. Pero todo lo que he probado no me ha funcionado, simplemente la cierra sin ejecutar nada.

Mi código es:

public class Cliente extends JFrame implements ActionListener, KeyListener {
String dir_ip;
String nick;
public Cliente(String dir_ip,String nick) {
this.dir_ip=dir_ip;
this.nick=nick;

this.addWindowListener(new WindowAdapter() {
public void WindowClosing(WindowEvent ev) {
this.dip_ip=""; // Aquí es donde me da error pq no reconoce dip_ip
System.exit(0);
}
}

He probado también a hacerlo así:

this.addWindowListener(new WindowAdapter() {
public void WindowClosing(WindowEvent ev) {
desconectar();
System.exit(0);
}
}

....

public desconectar() {
this.dip_ip="";
}

Pero nada, tampoco hace nada ni tan siquiera entra.

¿Alguna idea? Gracias
  #2 (permalink)  
Antiguo 07/04/2012, 09:05
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Ejecutar algo cuando se da a cerrar

Buenas:

El método debería ser windowClosing(...) con minúscula, si lo pones con W mayúscula es otro método y no se invocará. Para evitar este tipo de equívocos es bueno poner @Override, así si te equivocas al escribir y no pones exactamente el método padre, te saltará el error en compilado.


Código java:
Ver original
  1. this.addWindowListener(new WindowAdapter() {
  2.    @Override
  3.    public void windowClosing(WindowEvent ev) {
  4.       desconectar();
  5.       System.exit(0);
  6.    }
  7. }

En cuanto al primero que no reconoce this.dir_ip, ten en cuenta que en ese punto estás dentro de una clase anónima que hereda de WindowAdapter, no en tu clase Cliente, por lo que "this" referencia al WindowAdapter y no a Cliente. Una forma de evitar esto es como lo has hecho, llamando a un método desconectar(). Pero hay otra forma que consiste en ponerlo así

Código java:
Ver original
  1. this.addWindowListener(new WindowAdapter() {
  2.    public void WindowClosing(WindowEvent ev) {
  3.       Cliente.this.dip_ip=""; // Aquí es donde me da error pq no reconoce dip_ip
  4.       System.exit(0);
  5.    }
  6. }

Es poner Cliente.this.dir_ip. Esto funciona por ser esto una clase anónima definida dentro de Cliente.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 07/04/2012, 10:28
 
Fecha de Ingreso: junio-2007
Mensajes: 298
Antigüedad: 16 años, 10 meses
Puntos: 5
Respuesta: Ejecutar algo cuando se da a cerrar

Muchas gracias. Me ha sido muy útil.

Etiquetas: cerrar, string
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 10:01.