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