Bad (bad, bad) practice.
- User unfriendly: The user sees multiple icons in their task bar when expecting to see only one. Plus the side effects of the coding problems..
- A nightmare to code and maintain:
- A modal dialog offers the easy opportunity to focus attention on the content of that dialog – choose/fix/cancel this, then proceed. Multiple frames do not.
- A dialog (or floating tool-bar) with a parent will come to front when the parent is clicked on – you’d have to implement that in frames if that was the desired behavior.
There are any number of ways of displaying many elements in one GUI, e.g.:
CardLayout(short demo.). Good for:
- Showing wizard like dialogs.
- Displaying list, tree etc. selections for items that have an associated component.
- Flipping between no component and visible component.
JDesktopPanetypically used for an MDI.
JTabbedPanefor groups of components.
JSplitPaneA way to display two components of which the importance between one or the other (the size) varies according to what the user is doing.
JLayeredPanefar many well ..layered components.
JToolBartypically contains groups of actions or controls. Can be dragged around the GUI, or off it entirely according to user need. As mentioned above, will minimize/restore according to the parent doing so.
- As items in a
JList(simple example below).
- As nodes in a
- Nested layouts.
But if those strategies do not work for a particular use-case, try the following. Establish a single main
JFrame, then have
JOptionPane instances appear for the rest of the free-floating elements, using the frame as the parent for the dialogs.
In this case where the multiple elements are images, it would be better to use either of the following instead:
- A single
JLabel(centered in a scroll pane) to display whichever image the user is interested in at that moment. As seen in
- A single row
JList. As seen in this answer. The ‘single row’ part of that only works if they are all the same dimensions. Alternately, if you are prepared to scale the images on the fly, and they are all the same aspect ratio (e.g. 4:3 or 16:9).