我正在努力以自己的方式打印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
进行页眉/页脚调整,这需要您自己创建...我已经做过一次,但是代码很容易崩溃,因此只有很小的片段。