我有简单的 Java Swing 应用程序。我希望在关闭主窗口之前得到用户的确认。
这是我的代码:
package client_interface;
import java.awt.EventQueue;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class MainWindow {
private JFrame frame;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MainWindow window = new MainWindow();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public MainWindow() {
initialize();
}
private void setFrameSize(JFrame frame) {
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
int width = gd.getDisplayMode().getWidth();
int height = gd.getDisplayMode().getHeight();
frame.setBounds(new Rectangle(width/4, height/4, width/2, height/2));
//frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
}
private void initialize() {
frame = new JFrame("Test");
setFrameSize(frame);
frame.addWindowFocusListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
if (JOptionPane.showConfirmDialog(frame,
"Are you sure to close this window?", "Really Closing?",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION){
System.exit(0);
}
}
});
}
}
但似乎frame.addWindowFocusListener不起作用。
请告诉我将事件窗口关闭添加到我的框架的正确方法。
最佳答案
替换
frame.addWindowFocusListener(new WindowAdapter() {
与
frame.addWindowListener(new WindowAdapter() {
第一个采用 WindowFocusListener
,当窗口获得或失去焦点时将调用该监听器。
关于java - Swing addWindowFocusListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26593768/