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

Beberto56 119 Messages postés mardi 8 avril 2008Date d'inscription 22 décembre 2008 Dernière intervention - 16 mai 2008 à 11:57 - 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
amine1234Z 134 Messages postés samedi 26 mai 2007Date d'inscription 31 mai 2010 Dernière intervention - 17 mai 2008 à 00:36
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de amine1234Z
Utilisateur anonyme - 17 mai 2008 à 19:25
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
nassourra 11 Messages postés mercredi 11 février 2009Date d'inscription 1 mars 2009 Dernière intervention - 23 févr. 2009 à 11:33
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
nassourra 11 Messages postés mercredi 11 février 2009Date d'inscription 1 mars 2009 Dernière intervention - 26 févr. 2009 à 20:37
0
Merci
merci dan
Commenter la réponse de nassourra
walkn 96 Messages postés samedi 2 mai 2009Date d'inscription 23 avril 2011 Dernière intervention - 9 juin 2010 à 16:17
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
Utilisateur anonyme - 9 juin 2010 à 17:59
0
Merci
Salut,

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


Cordialement,


...\ Dan /...
Commenter la réponse de Utilisateur anonyme
walkn 96 Messages postés samedi 2 mai 2009Date d'inscription 23 avril 2011 Dernière intervention - 10 juin 2010 à 11:49
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
cs_Tato33 1 Messages postés mardi 27 juillet 2010Date d'inscription 27 juillet 2010 Dernière intervention - 27 juil. 2010 à 13:58
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
sarrasoror 5 Messages postés lundi 20 avril 2009Date d'inscription 11 mars 2011 Dernière intervention - 7 mars 2011 à 19:16
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
Utilisateur anonyme - 23 févr. 2009 à 16:46
-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.