Salut,
j'ai un pb ds l'impression en java.le pb existe dans la position du jTable et les chaines de caracteres que j'aime imprimer.voila mon code :
**une methode int print(Graphics g, PageFormat pageFormat, int pageIndex):

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
  public int print(Graphics g, PageFormat pageFormat, int pageIndex)throws PrinterException {
        
        Graphics2D g2 = (Graphics2D)g;
        g2.setColor(Color.black);
        int i=0;
        int fontHeight = g2.getFontMetrics().getHeight();
        int fontDescent = g2.getFontMetrics().getDescent();
        
// laisser de l'espace pour le numero de page
        double pageHeight = pageFormat.getImageableHeight() - fontHeight;
        double pageWidth = pageFormat.getImageableWidth();
        double tableWidth = (double)tableView.getColumnModel().getTotalColumnWidth();
        double scale = 1;
        if (tableWidth >= pageWidth) {
            scale = pageWidth / tableWidth;
        }
        while (tableView.getValueAt(i,0) != null)
            i++;
        double headerHeightOnPage = tableView.getTableHeader().getHeight()*scale;
        double tableWidthOnPage = tableWidth * scale;
        double oneRowHeight = (tableView.getRowHeight() + tableView.getRowMargin())*scale;
        int numRowsOnAPage = (int)((pageHeight-headerHeightOnPage) / oneRowHeight);
        double pageHeightForTable = oneRowHeight * numRowsOnAPage;
        int totalNumPages = (int)Math.ceil(((double)i) / numRowsOnAPage);
        if (pageIndex >= totalNumPages)
            return NO_SUCH_PAGE;
        
        g2.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
// en bas au centre
        g2.drawString("Page: " + (pageIndex +1),(int)pageWidth/2 - 35, (int)(pageHeight + fontHeight - fontDescent));
        g2.translate(0f, headerHeightOnPage);
        g2.translate(0f, -pageIndex*pageHeightForTable);
// si cette partie de la page est plus petite
// que la taille disponible, alors découper les contours appropriés
        if (pageIndex + 1 == totalNumPages) {
            int lastRowPrinted = numRowsOnAPage * pageIndex;
            int numRowsLeft = i - lastRowPrinted;
            //g2.setClip(0, (int)(pageHeightForTable * pageIndex),(int)Math.ceil(tableWidthOnPage),(int)Math.ceil(oneRowHeight * numRowsLeft));
            g2.setClip(0, 0,(int)Math.ceil(tableWidthOnPage),(int)Math.ceil(oneRowHeight * numRowsLeft));
            
        }
// sinon découper la zone disponible toute entière
        else {
            g2.setClip(0, (int)(pageHeightForTable * pageIndex),(int)Math.ceil(tableWidthOnPage),(int)Math.ceil(pageHeightForTable));
        }
        g2.scale(scale, scale);
        tableView.paint(g2);
// dessiner les entêtes en haut
        g2.scale(1/scale, 1/scale);
        g2.translate(0f, pageIndex*pageHeightForTable);
        g2.translate(0f, -headerHeightOnPage);
        g2.setClip(0, 0,(int)Math.ceil(tableWidthOnPage),(int)Math.ceil(headerHeightOnPage));
        g2.scale(scale, scale);
        tableView.getTableHeader().paint(g2);
        /****************************************/
        
        
        g2.scale(1/scale,1/scale);
        g2.translate(0f, fontHeight/2+50);
        g2.setClip(0, 0,(int) Math.ceil(tableWidthOnPage),(int)Math.ceil(headerHeightOnPage));
        g2.scale(scale,scale);
        g2.drawString("YYYYYYYYYY",0f,fontHeight-fontDescent);
        
        g2.translate(0f, -headerHeightOnPage-20);
        g2.setClip(0, 0,(int) Math.ceil(tableWidthOnPage),(int)Math.ceil(headerHeightOnPage+10));
        g2.drawString("XXXXXXXXX",0f,fontHeight-fontDescent);
          
        
        /****************************************/
        

        return Printable.PAGE_EXISTS;
        
        
    }


**une methode void print():

    public void print() {
        printJob.setPrintable(this, pageFormat);
        try {
            if(printJob.printDialog()) {
                Paper paper = pageFormat.getPaper();
                Paper save = pageFormat.getPaper();
                paper.setImageableArea(paper.getImageableX(), paper.getImageableY(), paper.getWidth() - (paper.getImageableX()+ 47.0), paper.getHeight() - (paper.getImageableY()+ 47.0));
                pageFormat.setPaper(paper);
                printJob.print();
                pageFormat.setPaper(save);
            }
        } catch(PrinterException pe) {
            System.out.println("Erreur lors de l'impression du document: " + toString());
        }
    }
Le pb est que je veux imprimer la chaine XXXXXXXXX et puis retourne à la ligne et imprimer la chaine YYYYYYYYYY et enfin retour à la ligne et impression du jTable .
par ce code il ya superposition du chaine XXXXXXXXXX et du jTable

Aidez moi SVP