为用户提供一个选择 printservice(打印机)的对话框。在应用程序指定的位置显示它,并且它是有模式的。如果指定的位置无效或者要使该对话框不可见,则在由实现所确定的位置显示它。该对话框阻塞其调用的线程,并且是有模式的应用程序。
该对话框可以包括一个选项卡窗格,该窗格具有在浏览 printservice 时,可以延迟方式从 printservice 的 serviceuifactory 所获得的自定义 ui。对话框会首先试图查找一个作为 jcomponent 的 main_uirole,然后查找作为 panel 的 main_uirole。如果没有 serviceuifactory 或没有相符的角色,则自定义选项卡将为空或不可见。
如果用户“确定”了该对话框,则对话框返回用户选择的 printservice,如果用户“取消”了该对话框,则返回 null。
应用程序必须传递要浏览的 printservice 的数组。该数组必须是非 null 和非空的。通常应用程序只传递能够打印特定 doc flavor 的 printservice。
应用程序可以传递最初显示的 printservice。可浏览服务的数组中必须包括非 null 参数。如果此参数为 null,则由实现选择某个服务。
可选地,应用程序可以传递要打印的 flavor。如果这是呈现给用户的非 mull 选择,则可针对该服务所支持的 flavor 更好地验证该选择。应用程序必须为返回的用户选择传递 printrequestattributeset。所调用的 printrequestattributeset 可以为空,或者可包含特定于应用程序的值。
这些内容用于为最初显示的 printservice 设置初始设置。忽略那些 printservice 不支持的值。在用户浏览 printservice 时,将属性和值复制到新的显示内容。如果用户浏览的 printservice 不支持特定的属性-值,则将该服务的默认值用作要复制的新值。
如果用户取消了对话框,则返回的属性将不会反映用户进行的任何更改。
此方法的典型基本用法是:
printservice[] services = printservicelookup.lookupprintservices(
docflavor.input_stream.jpeg, null);
printrequestattributeset attributes = new hashprintrequestattributeset();
if (services.length > 0) {
printservice service = serviceui.printdialog(null, 50, 50,
services, services[0],
null,
attributes);
if (service != null) {
... print ...
}
}
- 参数:
gc
- 用于选择屏幕。null 意味着主屏幕或默认屏幕。x
- 对话框在屏幕坐标中的位置,包括边框y
- 对话框在屏幕坐标中的位置,包括边框services
- 可浏览的服务,必须不为 null。defaultservice
- 要显示的初始 printservice。flavor
- 要打印的 flavor,或者为 null。attributes
- 输入时为应用程序最初提供的首选项。这不能为 null,但可以为空。输出时为反映用户所作的更改的属性。
- 返回:
- 用户选择的 printservice,如果用户取消了对话框,则返回 null。
- 抛出:
headlessexception
- 如果 graphicsenvironment.isheadless() 返回 true。
illegalargumentexception
- 如果 services 为 null 或为空,或者 attributes 为 null,或者初始的 printservice 未在可浏览服务的列表中。