我正在努力以自己的方式打印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,并且还应显示在左侧页面上。


我希望现在情况会更清楚。

最佳答案

我认为最简单的解决方案是生成类似

public class WrapPrintable implements Printable


并覆盖

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


用于Paperpaper的设置以添加附加的页眉和/或页脚空间,并编写一些类似的方法

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


然后printGraphics进行页眉/页脚调整,这需要您自己创建...我已经做过一次,但是代码很容易崩溃,因此只有很小的片段。

09-10 09:13
查看更多