Foros del Web » Programación para mayores de 30 ;) » Java »

Mostrar Nuevo Frame al Salir o al Presionar X

Estas en el tema de Mostrar Nuevo Frame al Salir o al Presionar X en el foro de Java en Foros del Web. Buenos días traigo un nuevo tema que no se a tocado es el de validar o simplemente que te muestre un Frame de despedida al ...
  #1 (permalink)  
Antiguo 29/07/2009, 14:50
Avatar de Solrac_JC  
Fecha de Ingreso: mayo-2009
Mensajes: 15
Antigüedad: 15 años
Puntos: 0
Información Mostrar Nuevo Frame y/o Validar al Salir Presionando la X

Buenos días traigo un nuevo tema que no se a tocado es el de validar o simplemente que te muestre un Frame de despedida al momento de salir de una aplicación, lo hice lo mas simple posible para que lo puedan adaptar a su aplicación.

Este es el código del Frame al que le adaptaremos el código.

Código:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.IOException;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;


public class frameX extends JFrame {
    JPanel contentPane;
    BorderLayout borderLayout1 = new BorderLayout();
    
    JMenuBar jMenuBar1 = new JMenuBar();
    JMenu menuArchivo = new JMenu();
    JMenuItem menSalir = new JMenuItem();
    
    public frameX() {
        try {
            setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
            jbInit();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }

    private void jbInit() throws Exception {
        
        contentPane = (JPanel) getContentPane();
        contentPane.setLayout(borderLayout1);
        setSize(new Dimension(600, 500));
        
        menuArchivo.setText("ARCHIVO");
        menSalir.setText("SALIR");
        menSalir.addActionListener(new frameX_menSalir_ActionAdapter(this));
        menuArchivo.add(menSalir);
        jMenuBar1.add(menuArchivo);
        setJMenuBar(jMenuBar1);
        
        this.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent evt) {
                System.out.println ("salio por aqui");
                momemtoDeSalir();
            }
        });
    }

    

    public void momemtoDeSalir(){
    	
    	int confirmacion = JOptionPane.showConfirmDialog(this, "SI = Frame De Despedida, NO = Salir Rapido, CANCELAR = No Hace Nada");
    	if(confirmacion == JOptionPane.OK_OPTION){
    		System.out.println ("Has Creado Un Nuevo Frame");
    		nuevoFrameX nuevo = new nuevoFrameX();
    		nuevo.show();
    	} else
    	if(confirmacion == JOptionPane.NO_OPTION){
    		System.out.println ("Saliendo");
    		System.exit(0);
    	} else
    	if(confirmacion == JOptionPane.CANCEL_OPTION){
    		System.out.println ("No Pasa Nada");
    	} else
    		System.out.println ("Otra Cosa");
    }

    void menSalir_actionPerformed(ActionEvent actionEvent) {
        System.out.println ("salio por aca");
        this.momemtoDeSalir();
    }

}



class frameX_menSalir_ActionAdapter implements ActionListener {
    frameX adaptee;

    frameX_menSalir_ActionAdapter(frameX adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent actionEvent) {
        adaptee.menSalir_actionPerformed(actionEvent);
    }
}
Este código es la aplicación que manda llamar al Frame principal

Código:
import java.awt.Toolkit;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import java.awt.Dimension;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JOptionPane;


public class aplicacion {
    boolean packFrame = false;

    public aplicacion() {
        frameX frame = new frameX();
        if (packFrame) {
            frame.pack();
        } else {
            frame.validate();
        }

        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension frameSize = frame.getSize();
        if (frameSize.height > screenSize.height) {
            frameSize.height = screenSize.height;
        }
        if (frameSize.width > screenSize.width) {
            frameSize.width = screenSize.width;
        }
        frame.setLocation((screenSize.width - frameSize.width) / 2,
                          (screenSize.height - frameSize.height) / 2);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                    UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
                } catch (Exception exception) {
                    exception.printStackTrace();
                }

                new aplicacion();
            }
        });
    }
}
Este código es el que mostrara al cerrar nuestro Frame con un mensaje de despedida

Código:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.IOException;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;

public class nuevoFrameX extends JFrame {
    JPanel contentPane;
    BorderLayout borderLayout1 = new BorderLayout();
    
    JButton btnSalir = new JButton();
    
    public nuevoFrameX() {
        try {
            jbInit();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }

    private void jbInit() throws Exception {
        
        contentPane = (JPanel) getContentPane();
        contentPane.setLayout(borderLayout1);
        setSize(new Dimension(300, 200));
        
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension frameSize = this.getSize();
        if (frameSize.height > screenSize.height) {
            frameSize.height = screenSize.height;
        }
        if (frameSize.width > screenSize.width) {
            frameSize.width = screenSize.width;
        }
        setLocation((screenSize.width - frameSize.width) / 2,
                          (screenSize.height - frameSize.height) / 2);
        setVisible(true);
        
        btnSalir.setText("Hasta Luego");
        btnSalir.addActionListener(new nuevoFrameX_btnSalir_ActionAdapter(this));
        contentPane.add(btnSalir);
    }

	public void btnSalir_ActionPerformed(ActionEvent e) {
		System.exit(0);
	}

}


class nuevoFrameX_btnSalir_ActionAdapter implements ActionListener {
  private nuevoFrameX adaptee;
  nuevoFrameX_btnSalir_ActionAdapter(nuevoFrameX adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.btnSalir_ActionPerformed(e);
  }
}
Espero que les sirva mi aporte, que tengan un excelente dia, mi nombre es Juan Carlos para serviles; para alguna duda respecto al tema mi correo es [email protected] con gusto le doy respuesta.

ITHUA

Última edición por Solrac_JC; 30/07/2009 a las 18:25 Razón: me equiboque en el titulo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:03.