Code pour imprimer un formulaire grâce à un bouton [Résolu]

Signaler
Messages postés
119
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
22 décembre 2008
-
Messages postés
1
Date d'inscription
vendredi 30 août 2019
Statut
Membre
Dernière intervention
30 août 2019
-
Bonjour,

j'ai réaliser un formulaire de saisie sur une frame avec netbeans. J'ai mis un bouton IMPRIMER à la fin de ce formulaire et je voudrais connaître le code à lui associer dans actionperformed afin qu'il imprime ce formulaire au format A4 sans que les trois boutons (quitter /imprimer /faire suivre) apparaissent sur l'impression.

Merci à vous pour l'attention que vous portez à ma requête.

Julien.

13 réponses

Messages postés
134
Date d'inscription
samedi 26 mai 2007
Statut
Membre
Dernière intervention
31 mai 2010
4
Salut,

pour que (quitter /imprimer /faire suivre) n'apparaissent pas sur l'impression. tu doit les enlever de votre Jframe, ce code la et destiner a imprimer une Jpanel donc tu doit inserer tes buttons dans un endroit hors de Jpanel que tu desire l'imprimer

package printer;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridBagLayout;
import java.awt.RenderingHints;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.util.Vector;

import javax.swing.JPanel;

/**
 * @author mep
 *
 */
public class MPanelPrinter
    implements Printable
{

    public MPanelPrinter(JPanel panel)
    {
        documentTitle = "";
        this.panel = panel;
        initPrintablePanel();
    }

    public void initPrintablePanel()
    {
        showPrintZone = false;
        fitIntoPage = false;
        wrapComponent = false;
        printJob = PrinterJob.getPrinterJob();
        pageFormat = printJob.defaultPage();
        pageFormat.setOrientation(1);
    }

    public void setOrientation(int orientation)
    {
        pageFormat.setOrientation(orientation);
    }

    public void setPrintZoneVisible(boolean status)
    {
        showPrintZone = status;
    }

    public void setWrapComponent(boolean status)
    {
        wrapComponent = status;
    }

    public void setFitIntoPage(boolean status)
    {
        fitIntoPage = status;
    }

    public int getPageWidth()
    {
        return (int)pageFormat.getImageableWidth();
    }

    public double getMarginTop ()
    {
        return pageFormat.getImageableY();
    }

    public double getMarginLeft ()
    {
        return pageFormat.getImageableX();
    }
   
    public void setLRMargins(int margin)
    {
        Paper paper = pageFormat.getPaper();
        paper.setImageableArea(paper.getImageableX() - (double)(margin / 2), paper.getImageableY(), paper.getImageableWidth() + (double)(margin / 2), paper.getImageableHeight());
        pageFormat.setPaper(paper);
    }
   
    public void setTBMargins(int margin)
    {
        Paper paper = pageFormat.getPaper();
        paper.setImageableArea(paper.getImageableX(), paper.getImageableY() - (double)(margin / 2), paper.getImageableWidth(), paper.getImageableHeight() + (double)(margin / 2));
        pageFormat.setPaper(paper);
    }

    public void setDocumentTitle(String title)
    {
        documentTitle = title;
    }

    public int print(Graphics g, PageFormat pf, int pageIndex)
        throws PrinterException
    {
        Dimension tailleDoc = panel.getSize();
        double hauteurDocu = tailleDoc.getHeight();
        double hauteurPage = pf.getImageableHeight();
        double largeurDocu = tailleDoc.getWidth();
        double largeurPage = pf.getImageableWidth();
        int totalNumPages = (int)Math.ceil(hauteurDocu / hauteurPage);
        if(wrapComponent)
            totalNumPages = taillePages.size();
        else
        if(fitIntoPage)
            totalNumPages = 1;
        double scaleX = largeurPage / largeurDocu;
        double scaleY = hauteurPage / hauteurDocu;
        if(pageIndex >= totalNumPages)
            return 1;
        Graphics2D g2d = (Graphics2D)g;
        g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
        g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
        g2d.translate(pf.getImageableX(), pf.getImageableY());
        if(fitIntoPage)
        {
            double ratio = Math.min(scaleX, scaleY);
            g2d.scale(ratio, ratio);
        } else
        if(wrapComponent)
        {
            if(pageIndex > 0)
                g2d.translate(0.0D, -((Double)taillePages.get(pageIndex - 1)).doubleValue());
        } else
        {
            g2d.translate(0.0D, (double)(-pageIndex) * hauteurPage);
        }
        panel.paint(g2d);
        if(wrapComponent)
        {
            double hauteurBlanc = ((Double)taillePages.get(pageIndex)).doubleValue();
            g2d.setColor(Color.WHITE);
            g2d.fillRect(0, (int)hauteurBlanc, (int)largeurPage, (int)hauteurBlanc + (int)hauteurPage);
        }
        if(wrapComponent)
        {
            if(pageIndex > 0)
                g2d.translate(0.0D, ((Double)taillePages.get(pageIndex - 1)).doubleValue());
        } else
        {
            g2d.translate(0.0D, (double)pageIndex * hauteurPage);
        }
        g2d.setColor(Color.BLACK);
        g2d.setFont(new Font("Verdanna", 2, 10));
        g2d.drawString(documentTitle + " - [" + (pageIndex + 1) + "/" + totalNumPages + "]", 0, (int)pf.getImageableHeight() - 20);
        return 0;
    }

    public void print()
    {
        printJob.setPrintable(this, pageFormat);
        try
        {
            if(printJob.printDialog())
            {
                if(wrapComponent)
                    calculatePages();
                Paper paper = pageFormat.getPaper();
                Paper save = pageFormat.getPaper();
                paper.setImageableArea(paper.getImageableX(), paper.getImageableY(), paper.getWidth() - paper.getImageableX(), paper.getHeight() - paper.getImageableY());
                pageFormat.setPaper(paper);
                printJob.setPrintable(this, pageFormat);
                printJob.print();
                pageFormat.setPaper(save);
            }
        }
        catch(PrinterException pe)
        {
            System.out.println("Erreur lors de l'impression du document: " + toString());
        }
    }

    private void calculatePages()
    {
        taillePages = new Vector();
        double hauteurPage = pageFormat.getImageableHeight();
        double hauteurTotal = 0.0D;
        double hauteurCumul = 0.0D;
        for(int i = 0; i < panel.getComponentCount(); i++)
        {
            int gridBagInsets = 0;
            if(panel.getLayout() instanceof GridBagLayout)
                gridBagInsets = ((GridBagLayout)panel.getLayout()).getConstraints(panel.getComponent(i)).insets.bottom + ((GridBagLayout)panel.getLayout()).getConstraints(panel.getComponent(i)).insets.top;
            double hauteurComponent = panel.getComponent(i).getSize().getHeight() + (double)gridBagInsets;
            if(hauteurComponent > hauteurPage)
            {
                wrapComponent = false;
                return;
            }
            hauteurTotal += hauteurComponent;
            if(hauteurTotal > hauteurPage)
            {
                hauteurTotal -= hauteurComponent;
                hauteurCumul += hauteurTotal;
                taillePages.add(new Double(hauteurCumul));
                hauteurTotal = hauteurComponent;
            }
        }

        hauteurCumul += hauteurTotal;
        taillePages.add(new Double(hauteurCumul));
    }

    private JPanel panel;
    private boolean showPrintZone;
    private boolean fitIntoPage;
    private boolean wrapComponent;
    private PageFormat pageFormat;
    private PrinterJob printJob;
    private Vector taillePages;
    private String documentTitle;
    public static final int PORTRAIT = 1;
    public static final int LANDSCAPE = 0;
}
Salut,

% Mauvais Sens %
le nombre de ligne de code que ce mec a saisi si c'est un bon programmeur il allait faire marché tout une app en java
pour imprimer en java il suffit d'ajouter un boutton imprimer
et derriere le code :

dabord
import java.awt.print.*;
dans imprimeractionperformed{
 MessageFormat header = new MessageFormat("Liste des Stagiaires");
        MessageFormat footer = new MessageFormat("Page{0, number, integer}");
        try{


       table.print(JTable.PrintMode.NORMAL, header, footer);


     }catch(java.awt.print.PrinterException e) {
      System.err.format("Erreur: ", e.getMessage());}

et c'est fini Mahamoud Ahmat
Cordialement

EDIT: Ajout de la coloration syntaxique.
Messages postés
1
Date d'inscription
vendredi 30 août 2019
Statut
Membre
Dernière intervention
30 août 2019

salut pour quoi sa de coupe le formulaire a des differentes pages cette codes d'impression

Salut,


Bien amine, je pensais justement a la source de notre ami "mep" ...

Cordialement.



...\ Dan /...
Messages postés
11
Date d'inscription
mercredi 11 février 2009
Statut
Membre
Dernière intervention
1 mars 2009
2
bjr
j'arrive pas à utiliser ce code comment puisse je l'appeler  car  j v  imprimer un jpanel en netbeans
Messages postés
11
Date d'inscription
mercredi 11 février 2009
Statut
Membre
Dernière intervention
1 mars 2009
2
merci dan
Messages postés
96
Date d'inscription
samedi 2 mai 2009
Statut
Membre
Dernière intervention
23 avril 2011

J'ai un petit souci avec ce code.

En fait j'ai creer une nouvelle classe ou j'ai mis le code pour l'impression, mais maintenant je voudrais que lors d'un appui sur un bouton je puisse imprimer la fenetre.
Mais je n'arrive pas à trouver l'instruction permettant de faire cela.

Pouvez vous m'aider?

Merci.

PS: le bouton pour imprimer se trouve dans un autre fenetre et donc dans une autre classe

Salut,

Dans le listener du bouton:
            MPanelPrinter printP = new MPanelPrinter(panelResultat);
            printP.print();


Cordialement,


...\ Dan /...
Messages postés
96
Date d'inscription
samedi 2 mai 2009
Statut
Membre
Dernière intervention
23 avril 2011

Super, merci Dan, ca fonctionne, mais le probleme c'est que l'impression me coupe le bord droit de ma frame, de plus ca m'imprime la frame sur deux pages!!
Pourquoi ca ne rentre pas sur une page, je ne comprends pas?!

Merci beaucoup
Messages postés
1
Date d'inscription
mardi 27 juillet 2010
Statut
Membre
Dernière intervention
27 juillet 2010

Bonjour,

J'ai bien essayé cette méthode et le problème c'est qu'il envoi bien le fichier à l'imprimante mais ça en reste la.
J'ai mis le MPanelPrinter dans une autre classe et j'y fais appel comme ceci :
else if(BoutonCliqué == Imprimer){

JPanel crédit3 = new credit3(créditClient);
MPanelPrinter p = new MPanelPrinter(crédit3);
p.print();
}
Si jamais vous pouvez m'aider, je vous remercie d'avance.
Messages postés
5
Date d'inscription
lundi 20 avril 2009
Statut
Membre
Dernière intervention
11 mars 2011

bsr walkn,
si vous avez réeussi a résoudre votre probleme de l'impression qui te coupe le bord droit de ma frame veuiller SVP me donnée la solution merci d'avance
bonjour tous,
voila je suis entrain de réaliser une application de gestion des étudiant en java en utilisant netbeans je me suis arrivée à la dernière étape qui concerne "l'impression des certificat de scolarité" ....j'ai effectué une recherche sur google mai j'ai rien trouvé. S'il vous plaît aidez-moi!
merrrrciiii vous m'avez bien aider

Salut nassourra.






JTextAreaPrinter printP =


new



JTextAreaPrinter(fiche);



MPanelPrinter printP = new MPanelPrinter(panel);





Le mieux serait de visiter:


http://www.javafr.com/codes/IMPRESSION-JPANEL-SANS-COUPURE-COMPOSANTS-BAS-PAGE_31743.aspx






Cordialement,

...\ Dan /...