feed twitter facebook LinkedIn facebook

Java » Cerrar una Ventana con Java Swing

Junio 4, 2010 por Víctor Cuervo . 5739 visitas 13 Comentarios Imprimir Imprimir

Una vez visto el ejemplo de Hola Mundo con Java Swing vamos a dar paso a realizar más cosas con Java Swing. En este caso, partiendo del ejemplo de Hola Mundo, vamos a ver como podemos cerrar una ventana con Java Swing. De esta manera controlaremos las acciones a realizar una vez que el usuario cierre la ventana.

La idea principal consiste en escuchar el evento windowClosing. El evento windowClosing es un evento del adaptador de ventana o WindowAdapter.

Recuerda que para la gestión de eventos tenemos Interfaces y Adaptadores. Los interfaces nos obligan a codificar todos los eventos a gestionar, mientras que en el Adaptador solo tenemos que gestionar el evento que necesitemos.

Pero lo primero es utilizar el método .addWindowListerner para suscribirnos a los eventos que se produzcan en la ventana. Así, en el constructor de nuestro programa utilizaremos dicho método:

  1. public CerrarVentana(){
  2. addWindowListener(new WindowAdapter() {...});
  3. }

Como podemos comprobar en el código, al método .addWindowListener le estamos pasando una clase WindowAdapter.

El método asociado al cierre de la ventana es windowClosing. En él solo vamos a realizar un exit del sistema con System.exit.

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

Así nuestro WindowAdapter quedaría de la siguiente forma para gestionar el cierre de una ventana con Java Swing.

  1. public CerrarVentana(){
  2. addWindowListener(new WindowAdapter() {
  3. public void windowClosing(WindowEvent e) {
  4. System.exit(0);
  5. }
  6. });
  7. }

Aunque nosotros solo hemos forzado un System.exit, en el método windowClosing podemos hacer lo que queramos. Por ejemplo, preguntar al usuario si está seguro de cerrar.

Descargar el Codigo
Descargar el código
Error en el Codigo
Error en el código
Foro sobre Java Swing
Foro sobre Java Swing
tags: , , , , , ,

Artículos relacionados:

13 comentarios »

Redifusión RSS de los comentarios de la entrada. TrackBack URI

1 2
  1. Bitacoras.com
    Junio 4, 2010 #

    Información Bitacoras.com…

    Valora en Bitacoras.com: Una vez visto el ejemplo de Hola Mundo con Java Swing vamos a dar paso a realizar más cosas con Java Swing. En este caso, partiendo del ejemplo de Hola Mundo, vamos a ver como podemos cerrar una ventana con Java Swing. De es……

  2. Garusis
    Junio 4, 2010 #

    hu… habia usado por mucho tiempo las interfaces y adaptadores, pero nunca note la diferencia… un detalle al que nunca habia prestado atencion, peor que puede resultar importante…. gracias de nuevo

  3. sebastian
    Agosto 21, 2010 #

    hola tengo el siguiente problema….
    si yo al JFrame le pongo con el setdefaultcloseoperation (Do_nothing_on_close),
    y le agrego un windowlistener q herede el adapter

    sobreescribo el windowClosing, y ahi no hago NADA…. se deberia cerrar si o no?

  4. Garusis
    Agosto 21, 2010 #

    @sebastian, si no pones nada en el windowClosing no se cerrara, ya que en el windowClosing debes poner las instrucciones para que el JFrame se cierre, ademas de las otras acciones que quieres que se realizen cuando se intente cerrar el JFrame… por lo tanto, si no pones nada, no se cerrara y no hara absolutamente nada cuando intentes cerrarlo…

    si quieres que cuando se intente cerrar la ventana se termine el programa, usa la forma descrita en el post… si quieres que solo se cierre la ventana, sin que se termine el resto del programa, puedes poner dentro del windowClosing, la instruccion:

    dispose();

  5. sebastian
    Agosto 21, 2010 #

    mira te explico mi problema, tengo un frame que es la “pantalla principal” de mi programa. quiero q cuando intente cerrar el frame, me muestre un dialog q le da opciones de guardado de unos archivos. lo q hago a nivel codigo es:
    le seteo cuando arranca setdefaultcloseoperation (Do_nothing_on_close), y le agrego un windowhandler q hereda de window adapter, en ese handler le defino el windowClosing, y hago q me muestre el dialog

    el problema q tengo es que cuando lo corro y cierro, noto como q ejecuta lo q esta dentro del windowClosing (muestra el dialog) pero desp cierra enotnces el dialog casi ni llega a verse. lo mas FRUSTRANTE es que cuando hago el debug, y me fijo los valores del las propiedades del frame el default close operation lo tiene en 0 (q es el valor de do nothing)…. te juro q si me resolves este problema sos mi idolo

    (hice otra aplicacion en la q solo muestro un frame y le seteo lo mismo y ahi me anda….. la unica diferencia es que estoy usando el builder del net beans y como hice una desktop aplication todo me lo envuelve en una clase medio rara (FrameView), no se si sera eso)

  6. Garusis
    Agosto 21, 2010 #

    mmmmm… pues, por lo que veo, el problema esta en el dialog que muestras… si quieres que se muestre un dialogo con la opcion de guardar o cancelar puedes hacerlo con un JOptionPane, o si prefieres personalizarlo, puedes diseñar tu propio dialog, heredando de la clase JDialog y hacerlo modal… de cualquiera de las dos formas, te sirve, ya que mientras el JOptionPane o el JDialog modal se este mostrando, el hilo de ejecucion se detiene esperando a que el usuario de una respuesta… si no te quieres complicar, lee un poco hacerca de como usar JOptionPane, ya que es mas sencillo que diseñar tu propio JDialog…

  7. sebastian
    Agosto 21, 2010 #

    ya me arme el dialog, lo unico q no entendi es
    1) como lo hago modal? y que significa maso menos q sea modal?

    2) decis q tengo q hacer un hilo aparte cuando muestre el dialog asi no se termina mi aplicacion?

  8. Garusis
    Agosto 21, 2010 #

    mmmm… pues veras… tratare de hacerlo simple… un JDialog modal, es un JDialog que recibe en su contructor la “Ventana” (JFrame, JDialog, etc..) y el parametro “true”… cuando se hace que el JDialog sea modal, el codigo se queda “parado”… osea, no se ejecuta nada, hasta que se haya realizado la accion para la que esta diseñado dicho JDialog… NO es necesario lanzar otro hilo para continuar la ejecucion… aqui puedes encontrar mas info sobre los dialogos modales y otras cosas… y se explica lo necesario… http://chuwiki.chuidiang.org/index.php?title=JOptionPane_y_di%C3%A1logos_modales#JDialog_modal (perdon a @lineadecodigo por citar informacion que no es de su pagina…)

  9. sebastian
    Agosto 21, 2010 #

    SOS LO MAS SE ME SOLUCIONO EL PROBLEMA CON LO DEL MODAL NO TE DAS UNA IDEA DE LO QUE ME ROMPI LA CABEZA PARA SOLUCIONAR ESTO, NO TENIA IDEA DE LO DE MODAL

    mil gracias!!!! :D :D:D

  10. Como cerrar una ventana? « Dudas de Programacion
    Octubre 25, 2011 #

    [...] muy bien. Nosotros lo hemos publicado en la web y te pueden ser de utilidad los artículos http://lineadecodigo.com/java/cerrar-una-ventana-con-java-swing/ y http://lineadecodigo.com/java/cerrar-un-frame-en-awt/ Salu2, Linea de Código. [...]

1 2

Deje un comentario

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*