How to make a JFrame Modal in Swing java
I have created one GUI in which I have used a JFrame. How should I make it Modal?
Solution 1:
Your best bet is to use a JDialog instead of a JFrame if you want to make the window modal. Check out details on the introduction of the Modality API in Java 6 for info. There is also a tutorial.
Here is some sample code which will display a JPanel panel
in a JDialog
which is modal to Frame parentFrame
. Except for the constructor, this follows the same pattern as opening a JFrame
.
final JDialog frame = new JDialog(parentFrame, frameTitle, true);
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
Edit: updated Modality API link & added tutorial link (nod to @spork for the bump).
Solution 2:
You can create a class that is passed a reference to the parent JFrame
and holds it in a JFrame
variable. Then you can lock the frame that created your new frame.
parentFrame.disable();
//Some actions
parentFrame.enable();
Solution 3:
just replace JFrame
to JDialog
in class
public class MyDialog extends JFrame // delete JFrame and write JDialog
and then write setModal(true);
in constructor
After that you will be able to construct your Form in netbeans and the form becomes modal
Solution 4:
- Create a new JPanel form
- Add your desired components and code to it
YourJPanelForm stuff = new YourJPanelForm();
JOptionPane.showMessageDialog(null,stuff,"Your title here bro",JOptionPane.PLAIN_MESSAGE);
Your modal dialog awaits...