Bonjour, g recupéré une source qui me permet d'imprimer des composants swing. Je voudrai pouvoir imprimer une page en paysage, car la table que je veux imprimer ne tien pas sur une page sinon.
voici ce ke g recupéré :
public class PrintUtilities implements Printable
{
private Component componentToBePrinted;
public static void printComponent(Component c)
{
new PrintUtilities(c).print();
}
public PrintUtilities(Component componentToBePrinted)
{
this.componentToBePrinted = componentToBePrinted;
}
public void print()
{
PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.setPrintable(this);
if (printJob.printDialog())
try
{
printJob.print();
}
catch(PrinterException pe)
{
System.out.println("Error printing: " + pe);
}
}
/** print method
* @param g graphisme
* @param pageFormat format
* @param pageIndex index
* @return valeur de retour de l'impression
*/
public int print(Graphics g, PageFormat pageFormat, int pageIndex)
{
if (pageIndex > 0)
{
return(NO_SUCH_PAGE);
}
else
{
Graphics2D g2d = (Graphics2D)g;
g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
disableDoubleBuffering(componentToBePrinted);
componentToBePrinted.paint(g2d);
enableDoubleBuffering(componentToBePrinted);
return(PAGE_EXISTS);
}
}
/** The speed and quality of printing suffers dramatically if
* any of the containers have double buffering turned on.
* So this turns if off globally.
* @see enableDoubleBuffering
* @param c composant
*/
public static void disableDoubleBuffering(Component c)
{
RepaintManager currentManager = RepaintManager.currentManager(c);
currentManager.setDoubleBufferingEnabled(false);
}
/** Re-enables double buffering globally.
* @param c composant
*/
public static void enableDoubleBuffering(Component c)
{
RepaintManager currentManager = RepaintManager.currentManager(c);
currentManager.setDoubleBufferingEnabled(true);
}
}
Merci