In Java, we can create modal dialog so that the main JFrame cannot be operated on until the modal dialog is closed. To realize 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.
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.