I've used some Subpanels to show where the X3D models would go when they're selected.
No, you have created 36 panels of size 135x135, and added all of them to a JPanel whose default layout manager is FlowLayout. So they will ba laid out in one row until there is no more room, then wrap to the next row. Changing the size of the main frame will re-arrange those panels.
Also, you call first call frame.setSize(1200,650) which will allow for 8 of the subpanels per row so it takes 5 rows to dhow all of them, but that requires a minimum of 675 pixels in height to show them - without taking into account the size of the menu -so some of the rows will be clipped. Then you call frame.setVisible(true) before you add any of the panels to the primary panel, so none would be visible initially.
Then after you add the subpanels to the primary panel you call frame.pack(), which causes your setSize() call to be ignored and everything will be laid out in their preferred size, and call frame.setVisible(true) again.
And none of this is done on the Event Dispatch thread, so the visible look may be all fouled up.