'Closing a dialog created by JOptionPane.showOptionDialog()

I am creating an options dialog using JOptionPane.showOptionDialog(...);

For the options parameter I am passing an array of JButtons each with its own ActionListener.

One of these buttons is responsible for closing the dialog. My question is: what code do I place in the close button's event handler to close the option dialog?

A point that may make a difference: the class responsible for showing this dialog is a singleton and, as such, the method responsible for displaying the dialog is static. Therefore, calling javax.swing.JInternalFrame.doDefaultCloseAction(); does not work "from a static context".

Thanks



Solution 1:[1]

final JButton btn = new JButton("Close");

btn.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent evt) {
    Window w = SwingUtilities.getWindowAncestor(btn);

    if (w != null) {
      w.setVisible(false);
    }
  }
});

Solution 2:[2]

Try

JOptionPane.getRootFrame().dispose();   

Solution 3:[3]

JOptionPane is closed by calling its setValue method

(Speaking of dirty side effects)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Adamski
Solution 2 Steve C
Solution 3 Zweibieren