java - Swing addWindowFocusListener

标签 java swing

我有简单的 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/

相关文章:

java - 将 Scala 库转换为 DLL (.NET)

java - 如何从单击按钮的代码中进行调用?

java - 创建 DHCP 客户端列表 java

java - 合理 `instanceof` ?将其与接口(interface)一起使用,但不与实现类型一起使用

java - http请求如何设置源IP?

Java 将长值转换为精确到纳秒的日期

java - 为什么 DragHandler exportAsDrag 禁用我的 MouseMotionListener?

java - 如何在java中以编程方式从任何句子的中间获取输入?

java - 在 SubmitListener 中使用 If-Else 语句

java - 为什么我在运行程序时无法检索按钮?