# Swing 组件中的打印支持

> 原文： [https://docs.oracle.com/javase/tutorial/2d/printing/swing.html](https://docs.oracle.com/javase/tutorial/2d/printing/swing.html)

上一节中显示的 [`PrintUIWindow.java`](examples/PrintUIWindow.java) 示例表明打印输出与您在屏幕上看到的完全相同。这种外观似乎很合理。但是，如果窗口是可滚动的，则当前滚动出视图的内容不包括在打印输出中。这会在打印机上创建转储效果。当打印诸如 Swing 表或文本组件之类的大型组件时，这成为一个特殊问题。组件可能包含许多行，这些行不能在屏幕上完全显示。在这种情况下，以与屏幕显示一致的方式打印组件显示的内容。

要解决此问题，Swing 表和所有文本组件都可以识别打印。以下方法直接提供 Java 2D 打印的使用：

*   [`javax.swing.JTable.print();`](https://docs.oracle.com/javase/8/docs/api/javax/swing/JTable.html#print--)
*   [`javax.swing.text.JTextComponent.print();`](https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html#print--)

这些方法为其内容提供了完整的打印实现。应用程序不需要直接创建`PrinterJob`对象并实现`Printable`接口。调用这些方法会显示一个打印对话框，并根据用户的选择打印组件的数据。还有其他方法可以提供更多选择。