Imprimer un Jcomponent non visible à l'ecran ?

Imprimer un Jcomponent non visible à l'ecran ? - Java - Programmation

Marsh Posté le 20-02-2003 à 10:57:25    

Voila... Il se trouve que je veuille imprimer un JPanel, mais sans l'afficher à l'écran... Ce que j'ai fait, c'est dériver la classe Jpanel en y mettant mon contenu...
 Cette classe implemente Printable dont voici plus ou moins la méthode print:

Code :
  1. public int print(Graphics g, PageFormat pageFormat, int index)
  2.    throws PrinterException
  3.    {
  4.  
  5.    if(index>=choeur.getMembres().nombreChanteurs())
  6.     return NO_SUCH_PAGE;
  7. setInfo(index);
  8. Dimension dim =getMinimumSize();
  9. setPreferredSize(dim);
  10. setMaximumSize(dim);
  11. PrintOptions.show.setVisible(false);
  12. PrintOptions.show.setContentPane(this);
  13. PrintOptions.show.setVisible(true);
  14. PrintOptions.show.pack();
  15. PrintOptions.show.validate();
  16. Graphics2D g2D = (Graphics2D) g;
  17.    
  18.     double scaleX = pageFormat.getImageableWidth()/dim.width;
  19.     double scaleY = pageFormat.getImageableHeight()/dim.height;
  20.     double scale = Math.min(scaleX,scaleY); 
  21.    
  22.     g2D.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
  23.     g2D.scale(scale,scale);   
  24.                  
  25.     print(g2D);         
  26.     return PAGE_EXISTS;
  27. }


 
tel quel ca fonctionne avec le nombre de page et tout etut.... si maintenant je supprime les lignes qui commence avec PrintOptions.show (show est une Jframe), mon imprimante me sort des pages blanches....
 
 
Mais question est donc:
 
peut on imprimer des JComponent sans les foutre dans une Jframe et les afficher à l'écran ?
 
Merci d'avance...

Reply

Marsh Posté le 20-02-2003 à 10:57:25   

Reply

Marsh Posté le 20-02-2003 à 18:43:48    

Je crois que j'ai trouvé...
 
En faite, JPanel est un composant "sans poids"
 
Mais pour l'imprimer, il faut qu'il soit heavy weight( comme JFrame)
 
alors au lieu d'étendre JPanel, j'etend JFrame...
Et tant pis pour les ressources mem.
 
Voila
 
J'espere que ca va etre utile, parceque j'ai vu  pas mal de gars qui avaient le meme prob que moi, mais sans avoir trouver de solutions...

Reply

Sujets relatifs:

Leave a Replay

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