When dispose
is called, the JInternalFrame
is made invisible, it is also removed from the JDesktopPane
(think desktopPane.remove(...)
)
This means that making the frame visible again has no (visible) effect. You need to add the frame back onto the JDesktopPane