返回打印此 jtable 中所使用的 printable
。
此方法用于希望定制 jtable
的 print
方法所使用的默认 printable
实现的开发人员。只想打印该表的开发人员应该直接使用其中一个打印方法。
可以在两种打印模式的任意一个内请求 printable
。在这两种模式中,它按顺序自然地将表的各行分散到多个页中,每页放入尽可能多的行。printmode.normal
指定表以当前大小打印。在此模式中,可能需要以类似于行的方式将列分散到多页中。需要这样分散时,列以与表的 componentorientation
一致的顺序进行分布。printmode.fit_width
指定按比例缩小输出(如有必要),以在每页上放入表的整个宽度(凭此放入所有列)。宽度和高度等比例进行缩放,以保持输出的高宽比。
printable
将该表 jtableheader
(如果有)的合适部分作为每页上表部分的标题。
可以通过提供 messageformat
参数将标题和脚注文本添加到输出中。打印代码根据格式请求 string,提供可以包括在已格式化字符串中的单个项:表示当前页码的 integer
。
当某些字符(例如单引号)是特殊字符并需要转义处理时,鼓励阅读 messageformat
的文档。
以下示例创建一个可用来打印 "duke's table page - " 和当前页码的 messageformat
:
// notice the escaping of the single quote
// notice how the page number is included with "{0}"
messageformat format = new messageformat("duke''s table: page - {0}");
printable
限制向它打印的每一页的可打印区域所绘制的内容。在某些情况下,可能看到该区域不可能放入所有页的内容。在这种情况下,可以截取输出,但实现将采取一些合理的行为。以下是几种已知会发生的情况,以及如何通过此特定实现来处理它们:
- 在任何模式中,当标题或脚注文本太宽而无法完全放入可打印区域时,从表的起始处(由
componentorientation
确定)开始打印尽可能多的文本。
- 在任何模式中,当行太高而无法放入可打印区域时,打印行的最上面部分并且不绘制表的下边框。
- 在
printmode.normal
中,当列太宽而无法放入可打印区域时,打印该列的中央部分,不打印表的左右边框。
将此 printable
包装到另一个 printable 中是完全有效的,这可以用来创建复杂的报告和文档。甚至可以请求将不同的页呈现到不同大小的可打印区域中。必须准备好让实现处理此问题(可能通过其布局计算动态完成)。但是,当必须跨页分散列时,为每页提供不同的高度可能无法与 printmode.normal
正常工作。
至于定制打印结果中表的外观的信息,jtable
自身将在打印期间负责隐藏选择和焦点。对于其他定制,用户的渲染器或绘制模式可以定制基于 jcomponent.ispaintingforprint()
值的外观。
此外,调用此方法之前,可以首先 修改该表的状态,例如取消单元编辑或者让用户恰当地调整表的大小。但是,在获取此 printable
之后,不得再修改该表的状态(无效的修改包括在大小或底层数据方面的修改)。如果更改了该表,返回 printable
的行为将是不确定的。
- 参数:
printmode
- printable 应使用的打印模式headerformat
- 指定在打印标题中所用文本的 messageformat
,如果没有则为 nullfooterformat
- 指定在打印脚注中所用文本的 messageformat
,如果没有则为 null
- 返回:
- 用于打印此 jtable 的
printable
- 从以下版本开始:
- 1.5
- 另请参见:
print(jtable.printmode, messageformat, messageformat,
boolean, printrequestattributeset, boolean)
,
printable
,
printerjob