Java教程是针对JDK 8编写的。本页面中描述的示例和实践不利用后续版本中引入的改进,并且可能使用不再可用的技术。
请参阅Java语言更改,了解Java SE 9和后续版本中更新的语言功能的摘要。
请参阅JDK发行说明,了解所有JDK版本的新功能、增强功能以及已删除或不推荐使用的选项的信息。
另一个常见的打印任务是打印窗口或框架的内容,可以是全部或部分。窗口可以包含以下组件:工具栏、按钮滑块、文本标签、可滚动的文本区域、图像和其他图形内容。使用Java 2D打印API的以下方法打印所有这些组件:
java.awt.Component.print(Graphics g); java.awt.Component.printAll(Graphics g);
下图表示一个简单的用户界面。
创建此用户界面的代码位于示例程序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()); // 打印java.awt.Frame的整个可见内容。 frame.printAll(g); return PAGE_EXISTS; }
printAll
方法的调用是此示例与打印文本或图像示例之间的唯一区别。print(Graphics g)
方法类似于用于屏幕渲染的java.awt.Component.paint(Graphics g)
方法。使用print()
方法而不是paint()
方法,因为Components
类可能已覆盖print()
方法以处理打印情况。
printAll(Graphics g)
方法打印组件及其所有子组件。通常使用此方法来打印对象,例如完整的窗口,而不是单个组件。