begin process at 2012 02 14 19:18:20
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Java

 > 

Archives

 > 

Au secours

 > 

impression contenu d'un JPanel


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

impression contenu d'un JPanel

lundi 30 mai 2005 à 14:44:09 | impression contenu d'un JPanel

claroune

Bonjour,
Je souhaiterais pouvoir imprimer le contenu d'un JPanel mais je ne vois pas du tout comment programmer ca.
Pouvez vous m'aider?
Merci d'avance
lundi 30 mai 2005 à 15:12:41 | Re : impression contenu d'un JPanel

mep

Salut,

Le probleme est relativement simple tant qu'on veut imprimer 1 seul page, sinon il faut prevoir le decoupage en page a la main. Il faut en fait calculer le nombre de page en faisant le ratio hauteur de la page / hauteur du panel. Une fois ce ratio calculer il suffit de translater le panel de -la taille de la page * le numero de la page pour imprimer le contenu de la page courante. Enfin je suppose que ceci est relativement abstrait c'est pourquoi je vous propose un petit exemple dans l'espoir que ceci pourra vous eclairer :

/*
 * Created on 30 mai 2005
 * MPrintablePanel.java
 */

package up5.questel2.client.composant;

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

import javax.swing.JPanel;

/**
 * @author mep
 *
 */

public class MPrintablePanel extends JPanel implements Printable {
   
    private boolean showPrintZone;
    private boolean fitIntoPage;
   
    private PageFormat pageFormat;
    private PrinterJob printJob;
   
   
    public static final int PORTRAIT     = PageFormat.PORTRAIT;
    public static final int LANDSCAPE     = PageFormat.LANDSCAPE;
   
    public MPrintablePanel() {
        super();
   
        showPrintZone = false;
        fitIntoPage = false;
       
        printJob     = PrinterJob.getPrinterJob();
        pageFormat     = printJob.defaultPage();
       
        pageFormat.setOrientation(PageFormat.PORTRAIT);
    }
   
   
    //orientation de la page
    public void setOrientation (int orientation) {
        pageFormat.setOrientation(orientation);
    }
   
    //definit si on affiche les zones d'impression
    public void setPrintZoneVisible (boolean status) {
        showPrintZone = status;
    }
   
    //permet de forcer le redimentionnement du document pour qu'il rentre dans 1 page
    public void setFitIntoPage (boolean status) {
        fitIntoPage = status;
    }
   
   
    //methode d'impression appeler par le printjob
    public int print(Graphics g, PageFormat pf, int pageIndex) throws PrinterException {
       
       
        Dimension tailleDoc = this.getSize();
       
       
        double hauteurDocu = tailleDoc.getHeight();
        double hauteurPage = pf.getImageableHeight();
        double largeurDocu = tailleDoc.getWidth();
        double largeurPage = pf.getImageableWidth();
       
       
        int totalNumPages = 1;
        if (!fitIntoPage)
            totalNumPages = (int) Math.ceil(hauteurDocu / hauteurPage);
       
     
        double scaleX = (largeurPage-pf.getImageableX()*2)/largeurDocu;
        double scaleY = (hauteurPage-pf.getImageableY()*2)/hauteurDocu;

       
       
        if (pageIndex >= totalNumPages) {
            return(NO_SUCH_PAGE);
        }
        else {
            Graphics2D g2d = (Graphics2D)g;
            g2d.translate(pf.getImageableX(), pf.getImageableY());
           
            if (fitIntoPage) {
                double ratio = Math.min(scaleX, scaleY);
                g2d.scale(ratio, ratio);
            }
            else {
                g2d.translate(0f, -pageIndex * hauteurPage);
            }           
          
           
            this.paint(g2d);
           
           
            return(PAGE_EXISTS);
        }
    }
   
   
    public void print () {
       
        printJob.setPrintable((Printable)this, pageFormat);
                      
        try {
            if(printJob.printDialog())
                    printJob.print();
        }
        catch (PrinterException pe) {
            System.out.println("Erreur lors de l'impression du document: " + this.toString());
        }
       
    }
   
   
    public void paint(Graphics g) {
        super.paint(g);
       

        int hauteurPage = (int)pageFormat.getHeight()-(int)pageFormat.getImageableY()*2;
        int largeurPage = (int)pageFormat.getWidth()-(int)pageFormat.getImageableX()*2;
       

        if (showPrintZone) {
            g.drawLine(0, hauteurPage, largeurPage, hauteurPage);
            g.drawLine(largeurPage, 0, largeurPage, hauteurPage);
        }
    }
   
}


jeudi 17 avril 2008 à 13:42:47 | Re : impression contenu d'un JPanel

sikou100

salut a tous mon probleme ce comment faire pour imprimer un interface en couleur;
 je fait le code si dessous puis au click sur le bouton imprimer l'impression ca marche tres bien mais l'interface imprimer est en noir-blanc or mois je veut comment faire pour que l'imression ce fait par couleur;
*************code source **********************
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Properties;

class MonDessin extends JPanel
{
  public void paint(Graphics g)
    {
      g.setColor(Color.red);
         g.fillOval(50, 20, 80, 80);
    }
}

public class EssaiImprimer extends JFrame implements  ActionListener

  MonDessin dessin = new MonDessin();
  JButton imprimer = new JButton("imprimer");
  ButtonGroup choix = new ButtonGroup();
  JRadioButton choixTout = new JRadioButton("tout", true);
  JRadioButton choixDessin = new JRadioButton("dessin", false);
  JPanel p = new JPanel();

  EssaiImprimer()
  {
    Container interieur = getContentPane();
    choix.add(choixTout);
    choix.add(choixDessin);
    p.add(choixTout);
    p.add(choixDessin);
    interieur.add("North", p);
    dessin.setPreferredSize(new Dimension(180, 120));
    interieur.add(dessin, BorderLayout.CENTER);
    Panel p1=new Panel();
    interieur.add("South", imprimer);
    imprimer.addActionListener(this);
    addWindowListener(new WindowAdapter()
       {
  public void windowClosing(WindowEvent evt)
    {
      System.exit(0);
    }
       });
  }

  public void actionPerformed(ActionEvent e)
  {
    Properties props = new Properties();
    props.put("awt.print.paperSize", "a4");
    props.put("awt.print.destination", "printer");

   
    PrintJob pJob = getToolkit().getPrintJob(this,
     "Printing_Test", props);
    if (pJob != null)
      {
        Graphics pg = pJob.getGraphics();
        if (choixTout.isSelected()) printAll(pg);
        else dessin.printAll(pg);
        pg.dispose();
        pJob.end();
      }
  }

  public static void main(String[] argv)
  {
    EssaiImprimer monCadre = new EssaiImprimer();
    monCadre.pack();
    monCadre.setVisible(true);
  }
}
************in code source ********* 
ci quelqu'un sait comment faire repond mois svp   et merci d'avance

dimanche 26 avril 2009 à 21:18:50 | Re : impression contenu d'un JPanel

sano2a1986

qulqn peut m'envoyer le code d'imprimer le contenu d'un Jpanel(java) Svp merci d'avance


Cette discussion est classée dans : impression, contenu, jpanel


Répondre à ce message

Sujets en rapport avec ce message

Impression [ par manu33 ] Salut,Je voudrais transformer mon JPanel en une image pour pouvoir le redimensionner avant impression. La seule solution que j'ai trouvé est la copie je voudrais imprimer un JPanel avec son contenu [ par bilson ] bonjour,je developpe une application qui gere les actes de naissance en java mais mon problème est de pouvoir imprimer les actes et je ne sais comment Impression JComponent [ par schneider ] Je souhaiterais imprimer le contenu d'un jpanel (son graphics)mais le problème, c'est que ce contenu est assez énorme et je n'arrive pas à faire imrpi Impression avec MPanelPrinter.java (de mep) [ par kinnex91 ] Bonjour, peut être pouvez-vous m'aidez : lorsque j'imprime mon JPanel, la fonction de la classe écrite par mep calcul le nombre de pages. Dans mon exe Impression du contenu d’une TextArea en Java. [ par mouna_bs ] Salut,Je voulait intégrer la fonction imprimer dans une interface de chat en java, où le texte à imprimer est le contenu d'une [impression] sur plusieurs page [ par Renus02 ] bonjour,voila mon probleme, j'imprime le contenu d'une JPanel, le soucis c'est que le contenu ne tient pas sur une page, lors de limpression pourtant Centrage contenu jpanel dans un borderlayout [ par Erwan76 ] Bonjour tout le monde, c'est encore moi.Je voulais avoir un petit renseignement sur un problème de layout.J'ai un jpanel qui s'affiche dans une zone b Etirement automatique des JPanel [ par eplanet ] Bonjour à tous, je m'adresse à vous car je rencontre quelques difficultés pour faire mon interface graphique. J'ai besoin d'ajouter un nombre quelconq Impression d'un jtextpane [ par pokitos ] Bonjour,j'ai découvert il ya peu sur le site un code source permettant d'imprimer le contenu d'un panel.(http://www.javafr.com/code.aspx?id=31743#).J' Impression JPanel [ par rammstein681 ] Bonjour,Sa fait quelques temps que je bute sur un problème, quand j'imprime un JPanel qui contiens plusieurs JTextFields, ils disparaissent une fois l


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,856 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales