JDialog with WindowListener - windowClosing not fired

11,553

Works for me. See also this related example.

import java.awt.EventQueue;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JDialog;

class MyClass extends JDialog {

    public MyClass() {
        setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
        addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent e) {
                System.out.println("closing...");
                //do something...
            }
        });
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                MyClass m = new MyClass();
                m.setVisible(true);
            }
        });
    }
}
Share:
11,553
Admin
Author by

Admin

Updated on June 11, 2022

Comments

  • Admin
    Admin almost 2 years

    I have a class that extends JDialog that have a window listener:

    class MyClass extends JDialog {
    
         public MyClass() {
             setDefaultCloseOperation( JDialog.DO_NOTHING_ON_CLOSE );
             addWindowListener( new WindowAdapter() {
    
                    @Override
                    public void windowClosing(WindowEvent e) {
                        System.out.println("closing...");
                        //do something...
                    }
    
                });
         }
    
    }
    

    When i click in the X button, nothing happens. And I don't see the print of "closing..."

    What I am missing?

  • Admin
    Admin over 12 years
    Thanks for example. I figured out that i'm was calling setVisible before adding the window listener...
  • trashgod
    trashgod over 12 years
    Behold, the power of an sscce! I'm pretty sure I've done something similar, too. :-)