Top level containers like JFrame are composed of several panes: the root pane, the content pane and the glass pane. JInternalFrames usually sit on the content pane or some layer between it and the glass pane. To make a JInternalFrame "modal", that is, block input to other frames below it, add it to the glass pane (there's a JFrame.getGlassPane() method), set the glass pane to be visible (glasspane.setVisible(true)) and add a bogus mouse listener to the glass pane to block input to anything but your "modal" frame (i.e glasspane.addMouseListener( new MouseAdapter())).
To remove the modal dialog, remove the frame from the glass pane, set the pane to be invisible and remove the listener.
For a high-level discussion of JFrame, see
The Java Tutorial: Using Top-Level Containers