Bonjour à tous !
Je suis depuis deux jours sur un problème de conversion d'un composant en image et je m'en remets à vous après avoir épuisé le stock Google et forums en tous genres.
Mon BUT : générer une java.awt.Image représentant un java.awt.Component. Voici la signature de la méthode que je veux :
J'ai trouvé l'implémentation suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part public Image getImage(Component component);
Il fonctionne parfaitement pour des composants simples MAIS dès que j'ai un composant composé de sous-composants, c'est pas génial ! Prenons un exemple : J'ai un JPanel avec un FlowLayout. Je place dans mon JPanel des JLabel. L'image générée va contenir le résultat du paint du JPanel et du paint du premier JLabel. Mais apparemment il n'y a pas eu l'appel au paint des autres JLabel !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public static Image getImage(Component component) { BufferedImage image = new BufferedImage(component.getWidth(), component .getHeight(), BufferedImage.TYPE_INT_RGB); Graphics2D g2d = image.createGraphics(); component.paint(g2d); g2d.dispose(); return image; }
Alors à force de vadrouiller sur le net, j'ai essayé de remplacer "paint" par "paintAll" mais du coup, l'image générée est complètement noire !
J'ai donc essayé d'autres codes avec des histoires de Transparency.....................
Bref je suis complètement perdu ! Est-ce que quelqu'un a déjà eu ce problème ? Encore mieuxEst-ce que quelqu'un aurait la solution ?
Je remercie d'avance toute âme charitable ayant déjà lu entièrement mon message et je remercierai encore plus tous ceux qui pourront m'apporter des réponses !
Partager