Imprimer / Capturer un JSCrollPane complet

Imprimer / Capturer un JSCrollPane complet - Java - Programmation

Marsh Posté le 28-04-2005 à 16:04:14    

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 :
  1. JViewport view = scrollPane.getViewport();
  2.        
  3.         Dimension size = view.getViewSize();
  4.         Image capture = view.createImage(size.width, size.height);
  5.        
  6.         Graphics captureG = capture.getGraphics();
  7.         view.paint(captureG);
  8.         FileOutputStream out = new FileOutputStream(file);
  9.         BufferedImage image = null;
  10.         image = (BufferedImage)capture;
  11.         if (image != null) {
  12.             JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
  13.             JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(image);
  14.             param.setQuality(0.8f,true);
  15.             encoder.encode(image, param);
  16.             out.flush();
  17.             out.close();
  18.         }


 
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 :
  1. JFrame frame = new JFrame() ;
  2.         frame.getContentPane().add(this) ;
  3.         frame.pack();       
  4.         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 :
  1. scrollPane.paint(captureG);
  2. au lieu de
  3. view.paint(captureG);


et la même résultat... avec les ascenseurs en plus  :lol: évidemment...  
 
Si quelqu'un peut m'aiguiller un poil là je dois dire que ca m'aiderait bien, merci d'avance.  

Reply

Marsh Posté le 28-04-2005 à 16:04:14   

Reply

Marsh Posté le 29-04-2005 à 12:03:50    

je suis toujours bloqué la dessus si quelqu'un voit ce qui peut clocher... :(

Reply

Marsh Posté le 02-05-2005 à 12:01:11    

alors la solution si quelqu'un tombe sur le même soucis :  
la méthode paint n'affiche que ce qui est visible à l'écran, donc elle doit certainement perndre en compte la résolution actuelle de l'écran.  
La solution est d'utilser

Code :
  1. view.printAll(captureG);


 
et là ca marche.  
a+


---------------

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed