在这里我我有部分功能是要将一张表格通过java调用打印机打印出来,这里要用到java的Printable接口
Printable
接口由当前页面 painter 的 print
方法实现,该方法由打印系统调用,以呈现页面。构建 Pageable
时,使用 PageFormat
实例和实现此接口的实例构成的实例用于描述每个页面。调用实现 Printable
的实例,以打印页面的图形。
在 PrinterJob
上可以设置 Printable(..)
。当客户端随后通过调用 PrinterJob.print(..)
启动打印时,控制被传送到打印系统,直到所有的页面完成打印。这是通过在文档中所有页面打印完成前一直调用 Printable.print(..)
来实现的。使用 Printable
接口时,只要打印系统请求,该打印就将页面内容提交给图像。
Printable.print(..)
的参数包括描述该页面可打印区域(计算适合该页面的内容所需要的区域)的 PageFormat
和页面索引(它指定请求页面的从 0 开始的打印流索引)。
在这里我通过链表来获取表格内容,以实现动态改变要打印出来的表格的大小,而我在打印方法中是用二维数组来实现打印和定位的,
因此有了个蛋痛的将链表转化为一维数组,然后又将一维数组转化为二维数组的过程。
链表转化为一维数组可以直接用toarray()方法
而一维数组转化为二维数组,int n = 4;//列
int m = osf.getInfoStrings().length/n;//行
String[][] data1 = new String[m][n];
int num = -1;
for (int i = 0; i < m; i++) {
for (int j