Foro de elhacker.net

Programación => Java => Mensaje iniciado por: NekroByte en 17 Julio 2007, 03:42 am



Título: processWindowEvent
Publicado por: NekroByte en 17 Julio 2007, 03:42 am
Estoy practicando Java haciendo un programa y bla bla bla, todo bien hasta ahí. El caso es que cuando le doy a la tachita de cerrar (mi programa extends Frame) no cierra, no pasa nada, por lo que decidí meterme con las clases que heredó ( lo he probado con System.exit() y con dispose() ):

Código
  1. protected void processWindowEvent(WindowEvent e){
  2.  
  3. if (e.WINDOW_CLOSING) System.exit(0);
  4.  
  5. }

Y me tira error de que no encuentra el símbolo (cannot find symbol), y la única forma de componerlo es que convierta el

Código
  1. import java.awt.*;

Código
  1. import java.awt.*;
  2. import java.awt.event.*;

Y yo me pregunto, ¿qué no se supone que el asterisco es para incluir todo el paquete?


Título: Re: processWindowEvent
Publicado por: Casidiablo en 17 Julio 2007, 23:11 pm
Esto sucede porque el asterisco incluye TODAS las clases de un paquete, pero event es un paquete no una clase, por lo tanto no lo incluye.

Saludos!


Título: Re: processWindowEvent
Publicado por: NekroByte en 18 Julio 2007, 05:28 am
Me imagino que .awt.event es un subpaquete de .awt, porque yo lo que creía era que el .* incluía todo lo que estaba dentro del paquete: clases, subclases y subpaquetes, en fin, todo.

Pero veo que sólo incluye las clases y no los demás paquetes.

Gracias, Casidiablo.


Título: Re: processWindowEvent
Publicado por: egyware en 19 Julio 2007, 17:50 pm
no has intendado añadir un WindowListener
y en el metodo WindowClosing agregar el System.exit(0);
xau................. ;D

PS:mmmm viendo tu codigo me parece algo extraño
Código
  1. protected void processWindowEvent(WindowEvent e){
  2. if (e.WINDOW_CLOSING) System.exit(0);
  3. }
  4.  
e.WINDOW_CLOSING que es un int o un boolean porque la sentencia if solo recibe booleans

ps: jiji aqui van extractos de las clases JDialog y Window cimi procesan el processWindowEvent
Código
  1. // extracto de la clase JDialog
  2. protected void processWindowEvent(WindowEvent e) {
  3.        super.processWindowEvent(e);
  4.  
  5.        if (e.getID() == WindowEvent.WINDOW_CLOSING) {
  6.            switch(defaultCloseOperation) {
  7.              case HIDE_ON_CLOSE:
  8.                 setVisible(false);
  9.                 break;
  10.              case DISPOSE_ON_CLOSE:
  11.                 setVisible(false);
  12.                 dispose();
  13.                 break;
  14.              case DO_NOTHING_ON_CLOSE:
  15.                 default:
  16.                 break;
  17.            }
  18.        }
  19. }
  20.  
  21. //extracto de la clase Window
  22. protected void processWindowEvent(WindowEvent e) {
  23.        WindowListener listener = windowListener;
  24.        if (listener != null) {
  25.            switch(e.getID()) {
  26.                case WindowEvent.WINDOW_OPENED:
  27.                    listener.windowOpened(e);
  28.                    break;
  29.                case WindowEvent.WINDOW_CLOSING:
  30.                    listener.windowClosing(e);
  31.                    break;
  32.                case WindowEvent.WINDOW_CLOSED:
  33.                    listener.windowClosed(e);
  34.                    break;
  35.                case WindowEvent.WINDOW_ICONIFIED:
  36.                    listener.windowIconified(e);
  37.                    break;
  38.                case WindowEvent.WINDOW_DEICONIFIED:
  39.                    listener.windowDeiconified(e);
  40.                    break;
  41.                case WindowEvent.WINDOW_ACTIVATED:
  42.                    listener.windowActivated(e);
  43.                    break;
  44.                case WindowEvent.WINDOW_DEACTIVATED:
  45.                    listener.windowDeactivated(e);
  46.                    break;
  47.                default:
  48.                    break;
  49.            }
  50.        }
  51. }