Je veux convertir un JPanel en une image. J'ai utilisé la méthode suivante: mais le problème est que le JPANEL est contenu dans une JScrollPane. Donc, lorsque je convertitons le JPanel en une image, l'image contient uniquement les pièces visibles dans le JPanel et les pièces cachées à l'intérieur du ScrollPane ne sont pas contenues dans l'image. P> Y a-t-il des solutions pour obtenir le contenu complet de la JPANEL dans une image? p> p>
3 Réponses :
Mais le problème est que le JPANEL est contenu dans un jscrollpane. Donc lorsque je convertitons le jPanel en une image, l'image ne contient que le parties visibles dans le JPANEL et les parties cachées à l'intérieur du Scrollpane ne figure pas dans l'image. P>
Ce n'arrive pas à moi ... Avez-vous essayé
paintall code> au lieu de
peinture code>? p>
Voici une excellente méthode qui va capturer le contenu de tout composant
code> visible ou non (ce n'est pas le mien, je l'ai eu quelque part de la sorte et que je l'ai utilisé depuis): p>
xxx pré> Voici un exemple mettant en valeur ce qui précède: p>
la vue Cadre: p>
p>
capture du panneau: p>
p>
xxx pré>
mise à jour: strong> p> selon votre commentaire: P>
J'ai écrit la bufferedimage dans un fichier en utilisant Imageo.write (bufferedimage, "jpg", fichier); Cela fonctionne bien pour les deux images png et gif, mais l'image JPG montre un fond rouge au lieu de blanc. Comment puis-je faire glisser ce problème? Merci p> BlockQuote>
voir Ceci Question / réponses similaire pour plus. Vous feriez quelque chose comme: p>
xxx pré> blockquote>
Merci beaucoup .. ça marche vraiment bien ..: D Mais j'ai un autre problème avec cela. J'ai écrit la bufferedimage dans un fichier en utilisant imageio.write (bufferedimage, "jpg", fichier); Cela fonctionne bien pour les images PNG et GIF, mais JPG Image montre un fond rouge au lieu de blanc. Comment puis-je faire glisser ce problème? Merci
ooppps ...! Cela fonctionne pour les JPG aussi. Merci beaucoup. Et il y a une pièce manquante dans le code ci-dessus, j'ai trouvé cette partie du lien que vous avez précédemment affiché. Ce serait utile pour les autres. Merci encore .... Finale privée Static Int [] RGB_MASKS = {0XFF0000, 0xFF00, 0xFF}; Colormodel final statique privé RGB_OPAQUE = Nouveau DirectColormodel (32, RGB_MASKS [0], RGB_MASKS [1], RGB_MASKS [2]);
Je ne sais pas pourquoi vous devez faire quelque chose de si compliqué. Tant que votre image tamponnée et votre fonction de peinture utilisent tous le composant (énorme) qui est dans le jscroolpane, le tout doit être enregistré.