在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
方法,當用戶關閉窗口時,會彈出一個確認對話框詢問用戶是否確定關閉。如果用戶點擊“是”,則程序將退出;否則,窗口將保持打開狀態。