Bonjour,

j'ai dessiné un panneau et j'ai voudrais l'imprimer mais puisque mon panneau s'etend j'aimerais qu'il soit imprimer sur plusieurs pages voila ma classe qui herite du JPanel :


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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
class MonDessin extends JPanel implements Printable,ActionListener{
 
	int[] pageBreaks;
 
	public int print(Graphics g, PageFormat pf, int pageIndex)
			throws PrinterException {
 
	        int lineHeight = 20;
 
	        if (pageBreaks == null) {
	            int linesPerPage = (int)(pf.getImageableHeight()/lineHeight);
	            int numBreaks = (Table[0].size()-1)/linesPerPage;
	            pageBreaks = new int[numBreaks];
	            for (int b=0; b<numBreaks; b++) {
	                pageBreaks[b] = (b+1)*linesPerPage; 
	            }
	        }
 
	        if (pageIndex > pageBreaks.length) {
	            return NO_SUCH_PAGE;
	        }
 
 
	        Graphics2D g2d = (Graphics2D)g;
	        g2d.translate(pf.getImageableX(), pf.getImageableY());
 
 
	        y=200;
			         y1=20;y2=190;y3=180;y4=210;y5=230;y6=250;y7=205;y8=225;y9=245;y10=265;
			  for(int i = 0; i<Table[0].size(); i++){
	              g.drawString(String.valueOf(Table[0].get(i)),20,y);
	              g.drawString(String.valueOf(Table[1].get(i)).substring(0, 13),75,y);
	              g.drawString(String.valueOf(Table[2].get(i)),205,y);
	              g.drawString(String.valueOf(Table[3].get(i)),240,y);
 
	              g.drawString(String.valueOf(Table[0].get(i)),310,y);
	              g.drawString(String.valueOf(Table[1].get(i)).substring(0, 13),365,y);
	              g.drawString(String.valueOf(Table[2].get(i)),510,y);
	              g.drawString(String.valueOf(Table[3].get(i)),530,y);
	              y+=15;
	              y1+=15;y2+=15;y3+=15;y4+=15;y5+=15;y6+=15;y7+=15;y8+=15;
	              y9+=15;y10+=15;
	       }
			  y+=15;
	          y1+=15;y2+=15;y3+=15;y4+=15;y5+=15;y6+=15;y7+=15;y8+=15;
	          y9+=15;y10+=15;
				g.drawRoundRect(20, 160, 270, y1, 8, 8);
				g.drawRoundRect(310, 160, 270, y1, 8, 8);
 
				g.drawLine(70, 160, 70, y3);
				g.setFont(font1);
				g.drawString("***.", 25, 175);
				g.drawString("*******", 75, 175);
				g.drawLine(200, 160, 200, y3);
				g.drawString("Qté", 205, 175);
				g.drawLine(20, 185, 290, 185);
				g.drawLine(230, 160, 230, y3);
				g.drawString("***", 245, 175);
 
 
				g.drawLine(360, 160, 360, y3);
				g.drawString("***.", 315, 175);
				g.drawString("******", 365, 175);
				g.drawLine(500, 160, 500, y3);
				g.drawString("****", 505, 175);
				g.drawLine(530, 160, 530, y3);
				g.drawString("***", 535, 175);
				g.drawLine(310, 185, 580, 185);
 
				g.setFont(font2);
				g.drawString("****", 90, 30);
				g.drawLine(30, 35, 280, 35);
				g.drawString("****", 40, 50);
				g.drawString("*****", 50, 70);
				g.drawString("******", 110, 110);
 
 
				g.drawString("*********", 390, 30);
				g.drawLine(330, 35, 580, 35);
				g.drawString("******", 340, 50);
				g.drawString("*******", 350, 70);
				g.drawString("*****", 410, 110);
 
				g.setFont(font3);
				g.drawString("******", 50, 90);
				g.drawString("*******", 350, 90);
 
				g.drawRoundRect(150, y2, 140, 80, 8, 8);
				g.drawLine(150, y4, 290, y4);
				g.drawLine(150, y5, 290, y5);
				g.drawLine(150, y6, 290, y6);
				g.drawString("***",155 ,y7);
				g.drawString("***",155 ,y8);
				g.drawString("***",155 ,y9);
				g.drawString("****",155 ,y10);
 
				g.drawRoundRect(440, y2, 140, 80, 8, 8);
				g.drawLine(440, y4, 580, y4);
				g.drawLine(440, y5, 580, y5);
				g.drawLine(440, y6, 580, y6);
				g.drawString("***",445 ,y7);
				g.drawString("***",445 ,y8);
				g.drawString("***",445 ,y9);
				g.drawString("****",445 ,y10);
 
		               g.drawString(Date_Bl, 160, 110); 
		               g.drawString(Date_Bl, 460, 110);
 
	        return PAGE_EXISTS;
	}
 
 
	public void actionPerformed(ActionEvent e) {
        PrinterJob job = PrinterJob.getPrinterJob();
        job.setPrintable(this);
        boolean ok = job.printDialog();
        if (ok) {
            try {
                 job.print();
            } catch (PrinterException ex) {
 
            }
        }
   }	
}

mon problème est que mon panneau s'imprime sur deux pages mais dans la deuxième page je reçoit un double de la première page non pas le continu de mon panneau, Comment je peux régler ce problème et merci.