在Java中,当用户关闭JFrame窗口时,可以通过实现WindowListener
接口或重写windowClosing
方法来处理窗口关闭事件。以下是两种方法的示例:
- 实现
WindowListener
接口:
import javax.swing.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class MyJFrame extends JFrame { public MyJFrame() { // 初始化窗口标题、大小等 setTitle("My JFrame"); setSize(300, 200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 添加窗口关闭监听器 addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { // 处理窗口关闭事件 int option = JOptionPane.showConfirmDialog(MyJFrame.this, "确定要关闭窗口吗?", "关闭窗口", JOptionPane.YES_NO_OPTION); if (option == JOptionPane.YES_OPTION) { System.exit(0); } } }); } public static void main(String[] args) { SwingUtilities.invokeLater(() -> { MyJFrame frame = new MyJFrame(); frame.setVisible(true); }); } }
- 重写
windowClosing
方法:
import javax.swing.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class MyJFrame extends JFrame { public MyJFrame() { // 初始化窗口标题、大小等 setTitle("My JFrame"); setSize(300, 200); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); // 添加窗口关闭监听器 addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { // 处理窗口关闭事件 int option = JOptionPane.showConfirmDialog(MyJFrame.this, "确定要关闭窗口吗?", "关闭窗口", JOptionPane.YES_NO_OPTION); if (option == JOptionPane.YES_OPTION) { System.exit(0); } } }); } public static void main(String[] args) { SwingUtilities.invokeLater(() -> { MyJFrame frame = new MyJFrame(); frame.setVisible(true); }); } }
在这两个示例中,我们都重写了windowClosing
方法,当用户关闭窗口时,会弹出一个确认对话框询问用户是否确定关闭。如果用户点击“是”,则程序将退出;否则,窗口将保持打开状态。