Java - 如何在每个页面上打印行号?

时间:2013-02-21 09:28:01

标签: java swing printing jtable awt

我正在努力以自己的方式打印JTables。这是我打印时想要获得的:

       Page 1        Page 2        Page 3
    |  1  2  3 |  |  4  5  6 |  |  7  8  9 |
    |1         |  |1         |  |1         |
    |2         |  |2         |  |2         |
    |3         |  |3         |  |3         |

       Page 4        Page 5        Page 6
    |  1  2  3 |  |  4  5  6 |  |  7  8  9 |
    |4         |  |4         |  |4         |
    |5         |  |5         |  |5         |
    |6         |  |6         |  |6         |

正如你所看到的,我想在每一页上获得tableHeader(我成功获得了!),并且每页都有行号。有没有人做过这样的事情?

这是我的JTable的管理方式:

scrollPane = new JScrollPane();
scrollPane.setViewportView(table);     // basic JTable
scrollPane.setRowHeaderView(rowTable); // basic JTable with only 1 column
tableHeader = table.getTableHeader();  //
scrollPane.setColumnHeaderView(tableHeader);

我尝试在javax.swing.TablePrintable中执行某些操作,即每次剪辑在哪里打印表时计算,但没有成功:行号仅在第一页上打印。我有点绝望,有什么想法吗?

编辑:这里有一些图片(太大了,不能在这里发布)来展示我目前获得的内容,以及我想要获得的内容:

  • 第1页和第2页:http://i.imgur.com/euzeq70.png

    如您所见,第二页上的行号应该相同,因为它是表格的左侧部分(表格的宽度适合2页)

  • 第3页和第4页:http://i.imgur.com/YCFLu4X.png

    表格的中间部分。正如您所看到的那样,现在行号不应该是1 ... 49而是50 ... 99,并且它们仍然不会显示在左页

  • 第5和第6页:http://i.imgur.com/4xugX4j.png

    表格的下半部分。行号应为100,并且也会显示在左页。

我希望现在更清楚了。

1 个答案:

答案 0 :(得分:0)

我认为最容易获得解决方案的是生成类似

的内容
public class WrapPrintable implements Printable

并覆盖

 public int print(final Graphics graphics,
               final PageFormat pageFormat,
               int pageIndex) throws PrinterException {

用于设置Paperformat以添加额外的页眉和/或页脚空间,并编写一些方法,如

Graphics2D g2d = printGraphics(graphics, pageFormat, pageIndex, format);

printGraphics执行页眉/页脚调整,您需要自己创建...我已经完成了一次,但代码很容易爆炸,因此只有很小的碎片。