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 :
- public int print(Graphics g, PageFormat pageFormat, int index)
- throws PrinterException
- {
-
- if(index>=choeur.getMembres().nombreChanteurs())
- return NO_SUCH_PAGE;
- setInfo(index);
- Dimension dim =getMinimumSize();
- setPreferredSize(dim);
- setMaximumSize(dim);
- PrintOptions.show.setVisible(false);
- PrintOptions.show.setContentPane(this);
- PrintOptions.show.setVisible(true);
- PrintOptions.show.pack();
- PrintOptions.show.validate();
- Graphics2D g2D = (Graphics2D) g;
-
- double scaleX = pageFormat.getImageableWidth()/dim.width;
- double scaleY = pageFormat.getImageableHeight()/dim.height;
- double scale = Math.min(scaleX,scaleY);
-
- g2D.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
- g2D.scale(scale,scale);
-
- print(g2D);
- return PAGE_EXISTS;
- }
|
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...