Este es el código del Frame al que le adaptaremos el código.
Código:
Este código es la aplicación que manda llamar al Frame principalimport 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); } }
Código:
Este código es el que mostrara al cerrar nuestro Frame con un mensaje de despedidaimport 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(); } }); } }
Código:
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.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); } }