Ver Mensaje Individual
  #2 (permalink)  
Antiguo 07/04/2012, 09:05
Avatar de chuidiang
chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 5 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