Search code examples
javaswingjdialogwindowlistener

Java listener on dialog close


I have a Java app that displays a list from a database. Inside the class is the following code to open a new dialog for data entry:

@Action
public void addNewEntry() {
    JFrame mainFrame = ADLog2App.getApplication().getMainFrame();
    addNewDialog = new AddNewView(mainFrame, true);
    addNewDialog.setLocationRelativeTo(mainFrame);
    addNewDialog.addContainerListener(null);
    ADLog2App.getApplication().show(addNewDialog);
}

How do you add a listener to the main class to detect when the addNewDialog window is closed, so that I can call a refresh method and refresh the list from the database.


Solution

  • If AddNewView is a Window such as a Dialog or JDialog, you could use the Window.addWindowListener(...). That is, in your main class, you do

    addNewDialog.addWindowListener(someWindowListener);
    

    where someWindowListener is some WindowListener (for instance a WindowAdapter) which overrides / implemetnns windowClosed.

    A more complete example, using an anonymous class, could look like

    addNewDialog.addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosed(WindowEvent e) {
            refreshMainView();
        }
    });
    

    Relevant links: