📄 componentprinter.java
字号:
/*--------------------------------------------------------------------------*
| Copyright (C) 2006 Gereon Fassbender |
| |
| This program is free software; you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by the |
| Free Software Foundation. A copy of the license has been included with |
| these distribution in the COPYING file, if not go to www.fsf.org |
| |
| As a special exception, you are granted the permissions to link this |
| program with every library, which license fulfills the Open Source |
| Definition as published by the Open Source Initiative (OSI). |
*--------------------------------------------------------------------------*/
package org.rapla.components.iolayer;
import java.awt.*;
import java.awt.print.*;
import javax.swing.*;
/** Use this to print an awt-Component on one page.
*/
public class ComponentPrinter implements Printable
{
private Component component;
private boolean scaleToFit;
public ComponentPrinter(Component c, boolean scaleToFit)
{
component= c;
this.scaleToFit = scaleToFit;
}
public int print(Graphics g, PageFormat format, int pagenumber) throws PrinterException
{
if (pagenumber>0) { return Printable.NO_SUCH_PAGE; }
Graphics2D g2 = (Graphics2D) g;
if ( scaleToFit) {
g2.translate(format.getImageableX(), format.getImageableY());
scaleToFit(g2, format, component);
}
component.printAll(g2);
RepaintManager rm = RepaintManager.currentManager(component);
boolean db= rm.isDoubleBufferingEnabled();
try {
rm.setDoubleBufferingEnabled(false);
component.printAll(g2);
} finally {
rm.setDoubleBufferingEnabled(db);
}
return Printable.PAGE_EXISTS;
}
private static void scaleToFit(Graphics2D g, PageFormat format, Component c)
{
Dimension dim = c.getPreferredSize();
double sx = format.getImageableWidth() / dim.width;
double sy = format.getImageableHeight() / dim.height;
if (sx < sy) { sy = sx; } else { sx = sy; }
g.scale(sx, sy);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -