Modal dialog in Java example code

  Pi Ke        2011-08-18 09:50:27       40,871        2    

In Java, we can create modal dialog so that the main JFrame cannot be operated on until the modal dialog is closed. To achieve this, we need to use one class in Java--JDialog. This class can be used to create an modal dialog.

Example code :

import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Dialog extends JDialog{
    public Dialog(){
        super();
        JPanel panel=new JPanel();
        panel.add(new JLabel("Hello dialog"));
        this.getContentPane().add(panel);
    }
   
    public Dialog(MainFrame mf,String title,boolean modal){
        super(mf,title,modal);
        this.setSize(300,200);
        JPanel panel=new JPanel();
        panel.add(new JLabel("Hello dialog"));
        this.getContentPane().add(panel);
        this.setVisible(true);
    }
}


In the above code, we define a class Dialog which extends the JDialog class in Java. In the second constructor, there are three parameters. JFrame: parent frame,String-title on the dialog, boolean - whether the dialog is modal or non-modal.

The next java code is to demonstrate how to open the Dialog.

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MainFrame extends JFrame{
    public MainFrame(){
        this.setTitle("Dialog demo");
        this.setSize(400,300);
        this.setLocationRelativeTo(null);
       
        JPanel panel=new JPanel();
        JButton btn=new JButton("Open dialog");
        btn.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                new Dialog(MainFrame.this,"Hello",true);
            }
        });
        panel.add(btn);
        this.getContentPane().add(panel);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
   
    public static void main(String[] args){
        new MainFrame().setVisible(true);
    }
}

When click on the button on MainFrame, the Dialog will show up and the MainFrame will become non-operable. This can be used when we want to get some information from the dialog before we can continue our operations on the MainFrame.

JAVA  CODE  DEMO  MODAL  JFRAME  JDIALOG 

       

  RELATED


  2 COMMENTS


Bill [Reply]@ 2014-01-10 20:44:16

Lots of incomplete advice out there.  This worked for me.  Thank you!

BlackMail [Reply]@ 2016-01-27 15:51:19

Simple, and clear explanation, how to achieve modality. Thank you!



  RANDOM FUN

I am surrendering...