событие при закрытии окна, но не закрывая его - PullRequest
3 голосов
/ 29 октября 2010

Я хочу показать окно «Подтвердить закрытие» при закрытии главного окна приложения, но без его исчезновения. Сейчас я использую windowsListener, а точнее - событие windowsClosing, но при использовании этого события главное окно закрывается, и я хочу, чтобы оно оставалось открытым.

Вот код, который я использую:

Для регистрации слушателя

this.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent evt) {
                thisWindowClosing(evt);
            }
        });

Реализация обработки события:

private void thisWindowClosing(WindowEvent evt) {
    new closeWindow(this);
}

Также я пытался использовать this.setVisible(true) в методе thisWindowClosing(), но он не работает.

Есть предложения?

1 Ответ

3 голосов
/ 29 октября 2010
package org.apache.people.mclark.examples;
import java.awt.event.*;
import javax.swing.*;

public class ClosingFrame extends JFrame {

    public ClosingFrame() {
        final JFrame frame = this;
        // Setting DO_NOTHING_ON_CLOSE is important, don't forget!
        frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                int response = JOptionPane.showConfirmDialog(frame,
                        "Really Exit?", "Confirm Exit",
                        JOptionPane.OK_CANCEL_OPTION);
                if (response == JOptionPane.OK_OPTION) {
                    frame.dispose(); // close the window
                } else {
                    // else let the window stay open
                }
            }
        });
        frame.setSize(320, 240);
        frame.setLocationRelativeTo(null);
    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new ClosingFrame().setVisible(true);
            }
        });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...