如何打印 Literals

JTextComponent类为打印文本文档提供支持。 JTextComponent API 包含允许您实现基本和高级打印任务的方法。支持的格式包括 HTML,RTF 和纯文本。对于常见的打印任务,例如仅打印文本文档,请直接使用print方法。 print方法具有几种形式,并带有各种参数集。此方法准备您的文本文档,获取相应的Printable对象,然后将其发送到打印机。

如果Printable对象的默认实现不能满足您的需要,则可以通过覆盖getPrintable方法来包装默认Printable甚至完全替换它来自定义打印布局。

打印文本组件的最简单方法是调用不带参数的print方法。请参见下面的代码示例。

try {
    boolean complete = textComponent.print();
    if (complete) {
        /* show a success message  */
        ...
    } else {
        /*show a message indicating that printing was cancelled */
        ...
    }
} catch (PrinterException pe) {
    /* Printing failed, report to the user */
    ...
}

当您调用不带参数的print方法时,将显示一个打印对话框,然后以交互方式打印您的文本组件,而没有页眉或页脚。下面的代码示例显示了带有完整参数集的print方法签名。

boolean complete = textComponent.print(MessageFormat headerFormat,
                                       MessageFormat footerFormat, 
                                       boolean showPrintDialog,
                                       PrintService service
                                       PrintRequestAttributeSet attributes,
                                       boolean interactive);

当您使用所有参数调用print方法时,您将明确选择打印功能,例如页眉和页脚文本,打印属性,目标打印服务,以及是否显示打印对话框,以及是交互式还是非交互式打印。要确定最适合您需要的参数,请参阅下面的可用功能描述。

JTextComponent打印 API 提供以下功能:

交互式或非交互式打印

在交互 Pattern 下,将在打印期间显示带有中止选项的进度对话框。这是进度对话框的示例。

打印进度对话框的屏幕截图

该对话框允许用户跟踪打印进度。在事件分配线程上调用print方法时,进度对话框是 Pattern 对话框,否则是非 Pattern 对话框。重要的是您的文档在打印时保持不变,否则打印行为是不确定的。 print方法可确保您的文档不会被更改,并在打印期间禁用该组件。

如果您以非交互 Pattern 在事件分发线程上调用print方法,则所有事件(包括重绘)都将被阻止。这就是为什么只建议在具有不可见 GUI 的应用程序上在 EDT 上进行非交互式打印的原因。

您可以显示一个标准的打印对话框,允许用户执行以下操作:

  • 选择打印机

  • 指定份数

  • 更改打印属性

  • 开始打印之前取消打印

  • Start printing

打印对话框的屏幕截图

您可能会注意到,“打印”对话框未指定打印输出中的总页数。这是因为文本打印实现使用Printable API,并且在打印之前未知总页数。

将页眉或页脚(或两者)添加到打印版式

页眉和页脚由MessageFormat参数提供。这些参数允许对页眉和页脚进行本地化。请阅读MessageFormat类的文档,因为单引号等字符是特殊字符,需要避免。页眉和页脚都居中。您可以使用{0}插入页码。

MessageFormat footer = new MessageFormat("Page - {0}");

由于在打印之前输出的总页数未知,因此无法指定编号格式,例如“第 1 页,共 5 页”。

自动布局和分页

通过使用 JTextComponent 打印 API,您无需注意布局和分页。布局和分页都是自动完成的。文档内容的格式被设置为适合页面大小,并分布在多个页面上。如果要在页脚中插入页码,则只需为打印方法指定适当的页脚文本格式。如前所述,您可以通过在给 MessageFormat 页脚参数提供的字符串 中包括“{0}”来在页脚中指定页码。在打印输出中,\ {0}将被当前页码替换。

文本区域打印示例

让我们看一个名为 TextAreaPrintingDemo 的示例。该演示的主要功能是根据用户的选择在事件分发线程或后台线程上打印文本文档。该演示显示一个文本区域,允许选择几种打印功能,并根据所选选项打印文本区域的内容。该程序的完整代码可以在下面找到 TextAreaPrintingDemo.java。该演示的丰富 GUI 内置于NetBeans IDE GUI 构建器中。这是TextAreaPrintingDemo应用程序的图片。

TextAreaPrintingDemo 的屏幕截图

Note

boolean print()
布尔值打印(MessageFormat,MessageFormat)
布尔值打印(MessageFormat,MessageFormat,布尔值,PrintRequestAttributeSet,布尔值,PrintService)在不带参数的情况下调用时,将显示一个打印对话框,然后以交互方式打印此文本组件,而没有页眉或页脚文本。如果用户 continue 打印,则返回true,如果用户取消打印则返回false
当使用两个MessageFormat参数调用时,显示一个打印对话框,然后以指定的页眉和页脚文本交互式地打印此文本组件。
当使用一整套参数调用时,将根据指定的参数打印此文本组件。两个MessageFormat参数指定页眉和页脚文本。第一个布尔参数定义是否显示打印对话框。另一个布尔参数指定是否以交互方式打印。使用其他两个参数可以指定打印属性和打印服务。
每当省略PrintService参数时,将使用默认打印机。


About Oracle | Contact Us | Legal Notices | 使用条款 | 您的隐私权

上一页: 如何打印表格
下一页: 如何创建启动画面