Bonjour,
J'aimerais imprimer le contenu d'un JPanel (ou d'une JFrame). Actuellement j'ai le code suivant :
Mais la page est vide et j'ai l'impression que Main.frame.getGraphics(); ne retourne pas ce qu'il y a dans la frame mais plutot une "image" vide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91 import java.awt.Color; import java.awt.Container; import java.awt.Dimension; import java.awt.Frame; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.event.ActionEvent; import java.awt.print.PageFormat; import java.awt.print.Printable; import java.awt.print.PrinterException; import java.awt.print.PrinterJob; import java.io.UnsupportedEncodingException; import java.security.Key; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import javax.swing.JFrame; import javax.swing.JInternalFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; public class Main { /** * @param args */ static JFrame frame; public static void main(String[] args) { frame=new JFrame(); JPanel pann=new JPanel(); pann.add(new JLabel("yop")); frame.setContentPane(pann); frame.setVisible(true); frame.pack(); Rapport.print(); } } class Rapport { static void print() { // Récupère un PrinterJob PrinterJob job = PrinterJob.getPrinterJob(); // Définit son contenu à imprimer job.setPrintable(new PrintRapport()); // Affiche une boîte de choix d'imprimante if (job.printDialog()){ try { // Effectue l'impression job.print(); } catch (PrinterException ex) { ex.printStackTrace(); } } } } class PrintRapport implements Printable { /** Constructeur par défaut de PrintRectangle */ public PrintRapport() { } public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException { // Par défaut, retourne NO_SUCH_PAGE => la page n'existe pas int retValue = Printable.NO_SUCH_PAGE; switch(pageIndex){ case 0 : { // Dessin de la première page // Récupère la dimension de la zone imprimable double xLeft = pageFormat.getImageableX(); double yTop = pageFormat.getImageableY(); double width = pageFormat.getImageableWidth(); double height = pageFormat.getImageableHeight(); // La page est valide retValue = Printable.PAGE_EXISTS; graphics=Main.frame.getGraphics(); graphics.setClip((int)xLeft, (int)yTop, (int)width, (int)height); break; } } return retValue; } }
Merci d'avance pour votre aide
Partager