cs_claroune
Messages postés3Date d'inscriptionvendredi 16 juillet 2004StatutMembreDernière intervention16 juin 2005
-
30 mai 2005 à 14:44
sano2a1986
Messages postés3Date d'inscriptionlundi 30 mars 2009StatutMembreDernière intervention 1 avril 2009
-
26 avril 2009 à 21:18
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
cs_mep
Messages postés86Date d'inscriptionvendredi 7 mai 2004StatutMembreDernière intervention 3 septembre 20084 30 mai 2005 à 15:12
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 {
cs_sikou100
Messages postés37Date d'inscriptionjeudi 8 novembre 2007StatutMembreDernière intervention18 mai 2012 17 avril 2008 à 13:42
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();
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