Swing Java Tutorial

Mustang introduces different types of modality, in which you no longer use setModal but the new method setModalityType in the Dialog class to make a dialog modal.
Dialog.ModalityType is an enum in the java.awt package.
Its values are as follows:
APPLICATION_MODAL. Blocks all windows in the same application except those with the modal dialog as their owner.
DOCUMENT_MODAL. Makes all windows from the same document inaccessible, except those from the modal dialog's child hierarchy.
MODELESS. Does not block any other windows.
TOOLKIT_MODAL. Makes all windows from the same toolkit inaccessible, except those from the modal dialog's child hierarchy.

import java.awt.Dialog;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
public class ApplicationModalDialogDemo {
  public static void main(String[] args) {
    final JFrame parent1 = new JFrame("Parent Frame 1");
    parent1.setLayout(new FlowLayout());
    parent1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JButton button = new JButton("Application modal dialog");
    button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        JDialog dialog = new JDialog(parent1, "Application-Modal Dialog",
            Dialog.ModalityType.APPLICATION_MODAL);
        dialog.setBounds(200, 150, 200, 150);
        dialog.setVisible(true);
      }
    });
    parent1.add(button);
    parent1.setBounds(100, 100, 200, 150);
    parent1.setVisible(true);
    JFrame parent2 = new JFrame("Parent Frame 2");
    parent2.setBounds(500, 100, 200, 150);
    parent2.setVisible(true);
  }
}