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

Messages postés
119
Date d'inscription
mardi 8 avril 2008
Dernière intervention
22 décembre 2008
- - Dernière réponse :  Django - 26 mars 2015 à 10:46
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.
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
Messages postés
134
Date d'inscription
samedi 26 mai 2007
Dernière intervention
31 mai 2010
4
Merci
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 %

Merci amine1234Z 4

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de amine1234Z
1
Merci
Salut,


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

Cordialement.



...\ Dan /...
Commenter la réponse de Utilisateur anonyme
1
Merci
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.
Commenter la réponse de Django
Messages postés
11
Date d'inscription
mercredi 11 février 2009
Dernière intervention
1 mars 2009
0
Merci
bjr
j'arrive pas à utiliser ce code comment puisse je l'appeler  car  j v  imprimer un jpanel en netbeans
Commenter la réponse de nassourra
Messages postés
11
Date d'inscription
mercredi 11 février 2009
Dernière intervention
1 mars 2009
0
Merci
merci dan
Commenter la réponse de nassourra
Messages postés
96
Date d'inscription
samedi 2 mai 2009
Dernière intervention
23 avril 2011
0
Merci
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
Commenter la réponse de walkn
0
Merci
Salut,

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


Cordialement,


...\ Dan /...
Commenter la réponse de Utilisateur anonyme
Messages postés
96
Date d'inscription
samedi 2 mai 2009
Dernière intervention
23 avril 2011
0
Merci
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
Commenter la réponse de walkn
Messages postés
1
Date d'inscription
mardi 27 juillet 2010
Dernière intervention
27 juillet 2010
0
Merci
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.
Commenter la réponse de cs_Tato33
Messages postés
5
Date d'inscription
lundi 20 avril 2009
Dernière intervention
11 mars 2011
0
Merci
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
Commenter la réponse de sarrasoror
0
Merci
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!
Commenter la réponse de fethi1988
0
Merci
merrrrciiii vous m'avez bien aider
Commenter la réponse de reVcreW
-1
Merci
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 /...
Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.