打印用户interface的内容

另一个常见的打印任务是全部或部分打印窗口或框架的内容。该窗口可能包含以下组件:工具栏,按钮滑块,文本标签,可滚动文本区域,图像和其他图形内容。使用 Java 2D 打印 API 的以下方法来打印所有这些组件:

java.awt.Component.print(Graphics g);
java.awt.Component.printAll(Graphics g);

下图代表一个简单的用户interface。

创建此 UI 的代码位于示例程序PrintUIWindow.java中。

要打印此窗口,请修改前面示例中用于打印文本或图像的代码。生成的代码应如下所示:

public int print(Graphics g, PageFormat pf, int page)
    throws PrinterException {
    if (page > 0) {
        return NO_SUCH_PAGE;
    }

    Graphics2D g2d = (Graphics2D)g;
    g2d.translate(pf.getImageableX(), pf.getImageableY());

    // Print the entire visible contents of a
    // java.awt.Frame.
    frame.printAll(g);

    return PAGE_EXISTS;
}

Note:

调用printAll方法是此示例与打印文本或图像的示例之间的唯一区别。 print(Graphics g)方法反映了用于屏幕渲染的java.awt.Component.paint(Graphics g)方法。使用print()方法而不是paint()方法,因为Components类可能已覆盖print()方法以不同方式处理打印情况。

printAll(Graphics g)方法将打印组件及其所有子组件。此方法通常用于打印诸如完整窗口之类的对象,而不是单个组件。

首页