Bonsoir à tous
je suis entrain d'améliorer mon application de gestion pour une librairie et je suis entrain de développer la partie d'impression
je veux imprimer un jPanel qui lui même contenu dans une jFrame, contient des jLabel et une jTable
j'ai reussi après une recherche sur google à imprimer le contenu du jPanel mais le resultat pour la jTable est seulement la partie affichée à l'écran
voici le code
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
 
    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
      Properties props = new Properties();
 
	props.setProperty("awt.print.paperSize", "a4");
	props.setProperty("awt.print.destination", "printer");
 
	PrintJob demandeDImpression = getToolkit().getPrintJob(this, "Impression", props);
	if (demandeDImpression != null) {
	    Graphics gImpr = demandeDImpression.getGraphics();
	     jPanel5.printAll(gImpr);
	    gImpr.dispose();
	    demandeDImpression.end();
 
	}
    }
et j'ai trouvée une soution pour la jTable mais elle s'imprime sans les jLabels
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
 
private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {                                         
// TODO add your handling code here:
 
                    PrinterJob pj = PrinterJob.getPrinterJob();	
                    pj.setPrintable(GererClientsCreditsVentes.this);	
                    pj.printDialog();	
                    try 
                    {
                        pj.print();	
                    } 
                    catch (Exception PrintException) 
                    { 
                    }	
 
 
}
 
 
public int print(Graphics g, PageFormat pageFormat, int pageIndex)throws PrinterException 
        {
            Graphics2D g2 = (Graphics2D)g;
            g2.setColor(Color.black);
            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)jTableListeProduits.getColumnModel().getTotalColumnWidth();
            double scale = 1;
            if (tableWidth >= pageWidth) 
            {	
                scale = pageWidth / tableWidth;
            }
            double headerHeightOnPage = jTableListeProduits.getTableHeader().getHeight()*scale;
            double tableWidthOnPage = tableWidth * scale;
            double oneRowHeight = (jTableListeProduits.getRowHeight() + jTableListeProduits.getRowMargin())*scale;
            int numRowsOnAPage = (int)((pageHeight-headerHeightOnPage) / oneRowHeight);
            double pageHeightForTable = oneRowHeight * numRowsOnAPage;
            int totalNumPages = (int)Math.ceil(((double)jTableListeProduits.getRowCount()) / 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 = jTableListeProduits.getRowCount() - lastRowPrinted;	
                g2.setClip(0, (int)(pageHeightForTable * pageIndex),(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));
            }
 
            jLabelSousTitre43.paint(g2);
            jLabelClientSelectionne1.paint(g2);
            jLabelSousTitre45.paint(g2);
            g2.scale(scale, scale);
            jTableListeProduits.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);
            jTableListeProduits.getTableHeader().paint(g2);
            return Printable.PAGE_EXISTS;
        }
je veux savoir comment faire pour mélanger ces deux solutions en imprimant tout le contenu du jTable avec les jLabels

merci beaucoup de me fournir de l'aide