Vous pouvez rendre pratiquement n'importe quel composant de swing en une image mise en mémoire tampon.
Puisque vous n'avez besoin que d'une sous-image, je suppose qu'il s'agirait d'un processus en deux étapes : 1) rendre votre JPanel en une BufferedImage, 2) obtenir la sous-image de cette dernière.
BufferedImage bi = new BufferedImage(jPanel.getWidth(), jPanel.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = (Graphics2D)bi.getGraphics();
panel.printAll(g); //I assume you wanted child elements too... otherwise just use paint(g)
BufferedImage result= bi.getSubimage(...);
Remarque : cela ne fonctionnera qu'une fois que tous les composants auront été initialisés, positionnés, etc. et affichés.