static void removeFromWindow(Component c) { JFrame frame = getFrame(c); if (frame == null) ret; Container cp = frame.getContentPane(); // This is our BorderLayout if (cp != c.getParent()) { print("removeFromWindow fail"); ret; } cp.remove(c); Container mainC = (Container) cp.getComponents()[0]; cp.remove(mainC); frame.setContentPane(mainC); // magic combo to actually relayout and repaint frame.revalidate(); frame.repaint(); }