Bonjour, j'essaie sans succés de capturer dans un fichier / imprimer (cela revient quasiement au meme) le contenu d'un JSCrollPane.
J'ai testé cette solution :
Code :
- JViewport view = scrollPane.getViewport();
-
- Dimension size = view.getViewSize();
- Image capture = view.createImage(size.width, size.height);
-
- Graphics captureG = capture.getGraphics();
- view.paint(captureG);
- FileOutputStream out = new FileOutputStream(file);
- BufferedImage image = null;
- image = (BufferedImage)capture;
- if (image != null) {
- JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
- JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(image);
- param.setQuality(0.8f,true);
- encoder.encode(image, param);
- out.flush();
- out.close();
- }
|
l'image est aux bonnes dimension mais seule une partie est copiée, le reste est grisé la partie qui aurait été affichée si on avait fait cela :
Code :
- JFrame frame = new JFrame() ;
- frame.getContentPane().add(this) ;
- frame.pack();
- frame.setVisible(true);
|
(je le fais dans ma méthode capture pour tester)
deuxième tentative, appeler paint non pas sur le viewport mais sur le JScrollPane :
même chose qu'au dessus avec comme seule différence :
Code :
- scrollPane.paint(captureG);
- au lieu de
- view.paint(captureG);
|
et la même résultat... avec les ascenseurs en plus évidemment...
Si quelqu'un peut m'aiguiller un poil là je dois dire que ca m'aiderait bien, merci d'avance.