setDefaultCloseOperation代替显示JFrame

And*_*427 7 java swing jframe windowlistener

我正在制作一个文字处理器应用程序,以便练习Java,我希望它能够在用户尝试关闭应用程序时,JFrame将要求保存更改.

我在考虑setDefaultCloseOperation()但到目前为止我运气不佳.如果可能的话,我还希望看到用户点击窗口右上角的"X".

phs*_*sym 13

您可以将JFrame DefaultCloseOperation设置为DO_NOTHING,然后设置WindowsListener以获取close事件并执行您想要的操作.我会在几分钟内发布一个例子.

编辑:这是一个例子:

public static void main(String[] args) {
        final JFrame frame = new JFrame("Test Frame");

        frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

        frame.setSize(800, 600);

        frame.addWindowListener(new WindowAdapter() {
            //I skipped unused callbacks for readability

            @Override
            public void windowClosing(WindowEvent e) {
                if(JOptionPane.showConfirmDialog(frame, "Are you sure ?") == JOptionPane.OK_OPTION){
                    frame.setVisible(false);
                    frame.dispose();
                }
            }
        });

        frame.setVisible(true);
    }
Run Code Online (Sandbox Code Playgroud)