Java - Login y JDialog

 
Vista:

Login y JDialog

Publicado por Guillermo (2 intervenciones) el 07/01/2010 07:06:50
Buenas, tengo una aplicación hecha en Swing y lo único que me falta es el login, lo implementé mediante un JDialog modal que chequea contra una base de datos, se muestra ni bien se inicia la aplicación y en caso de validar el usuario inicia la ventana principal.
El problema es que cuando cierro la aplicación desde la ventana principal con "X" en el extremo superior derecho de la ventana no cierra realmente la aplicación; como si quedara el thread del JDialog corriendo debajo. Pasa lo mismo cuando cierro la ventana de Login sin autenticarse.
Probé quitarle la propiedad modal al JDialog pero se inician la ventana Login y Principal al mismo tiempo.
La clase Login extiende a JDialog y setea una variable estática que se encuentra en Aplicacion cuando el usuario es válido, caso contrario esta variable está vacía ("").
La aplicación fue generada mediante Netbeans y en la clase Aplicacion (main) tengo el siguiente código de ejecución:

public class Aplicacion extends SingleFrameApplication {
@Override protected void startup() {
...
show(new Login()); // Si el usuario es válido setea la variable estática Aplicacion.usuario con el nombre del usuario.
if (!Aplicacion.usuario.equals(""))
show(new Principal(this));
}
}

Si alguien me puede ayudar estaría muy agradecido.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Login y JDialog

Publicado por Luis (83 intervenciones) el 11/01/2010 02:01:20
Hola Guillermo.

Si quieres que finalice la aplicacion tienes que hacer un System.exit(0);

Por ejemplo.

puedes implementar el método windowClosing()

Esto lo puedes hacer de muchas maneras

Lo puedes hacer implementado la clas windowListener o extendiendo de windowAdapter
La diferencia es que puedes utilizar windowAdapter si no tienes herencia en esa clase y si no implementas la otra. La diferencia entre ambas es que como debes saber que si implementas una interfaz tienes que implementar todos sus metodos lo que no sucede si utilizas la clase.

Si utilizas netbeans es las propiedades le puedes poner en las propiedades en el metodo defaultCloseOperation Exit on close.

Y si quieres es que se oculte la ventana pero no se finalice el programa haces un dispose();

public void windowClosing(WindowEvent e) {
System.exit(0);
}

public void windowClosing(WindowEvent e) {
dispose();
}

Saludos y espero te ayude a solucionar tu problema
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar