Mega Code Archive

 
Categories / Java Tutorial / Swing
 

Improved Dialog Modality

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);   } }