Java - Cerrar JFrame

 
Vista:

Cerrar JFrame

Publicado por Enrique (32 intervenciones) el 19/03/2007 06:07:25
Buenos días, espero que me puedan ayudar. Tengo un problema con el método para cerrar un JFrame, lo que sucede es que debo asegurarme de que se realize un metodo desconexion antes de que se cierre la ventana, pero no puedo manejar esto cuando se cierra con el símbolo X de la cabecera de la ventana en windows. Estuve buscando el método para poder manejar este evento de cerrado pero no lo he encontrado. No sé si este evento se puede manejar o es que hay algún método. Bueno, espero que me puedan ayudar. Gracias de antemano.
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:Cerrar JFrame

Publicado por Jairo (6 intervenciones) el 19/03/2007 06:36:08
Enrique lo que puedes hacer es esto:

Por defecto las JFrame se cierran completamente cuando pulsas en la X de la cabecera, es decir, algo como "setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE)" lo que puedes hacer es hacer que la ventana sobreescriba la clase WindowsAdapter que maneja sus eventos de la siguiente manera:

import javax.swing.*;
import java.awt.event.*;

public class NewJFrame extends JFrame
{
public static void main(String[] args)
{
NewJFrame inst = new NewJFrame();
inst.setVisible(true);
}

public NewJFrame()
{
super("Ventana de prueba");
setSize(400, 300);
addWindowListener(new ManejadorEventos());
}

class ManejadorEventos extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
setVisible(false);
System.out.println("Aqui podras colocar lo que quieras");
System.out.println("antes de que la ventana se cierre");
System.exit( 0 );
}
}
}

Corre este ejemplo y creo que solucionara tu problema.

Suerte con eso...
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

RE:Cerrar JFrame

Publicado por Enrique (32 intervenciones) el 19/03/2007 15:41:44
Gracias Jairo, ya he podido cerrar la conexion antes de que se cierre la ventana, ahora quisiera hacerte otra consulta. Lo que sucede es que yo tengo un botón "Cerrar", que muestra un JOptionPane.showMessageDialog(this,"Se desconectó del PINPad") en el JFrame antes que se cierre la ventana a través del botón. Además de ello, a dicho botón le he puesto un this.dispose() para que se cierre sólo ese JFrame, ya que es llamado desde otra aplicación. ¿Es posible que estas dos cosas pueda hacerlas con el botón X de la cabecera? si es así, te pediría por favor que me orientes cómo hacerlo? Gracias otra vez.
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

RE:Cerrar JFrame

Publicado por Jairo (6 intervenciones) el 19/03/2007 16:20:40
No entiendo muy bien que me quieres decir. Podrías ser un poco más claro
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

RE:Cerrar JFrame

Publicado por Enrique (32 intervenciones) el 19/03/2007 16:32:58
Lo que pasa es que el JFrame se abre desde otro JFrame que es mi aplicación principal, y mediante la X de la cabecera, se cierra todo el programa que tengo, y no deseo que pase eso, sólo quisiera que se cierre el JFrame a través de la X, pero que antes de cerrarse mande un mensaje de que se ha cerrado la conexion mostrando un JOptionPane. Por eso te digo que yo tengo un boton "cerrar" que hace estas dos cosas, pero quisiera saber si cuando cierro el JFrame a través de la X puedo realizar lo mismo. Espero me puedas ayudar. Gracias.
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

RE:Cerrar JFrame

Publicado por Enrique (32 intervenciones) el 19/03/2007 17:22:58
Bueno ya encontré la forma de hacer lo que necesitaba, puse el siguiente código dentro del JFrame que deseo cerrar con la X de la cabecera, y funciona perfecto.

private void formWindowClosing(java.awt.event.WindowEvent evt){
if(txtResConnect.getText().equals("true")){
pinpad.Disconnect();
System.out.println("Se desconectó ...");
JOptionPane.showMessageDialog(this,"Se desconectó ...");
}
this.dispose();
}

Gracias, Jairo. Chau.
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